elasticsearch:删除文档后如何释放商店大小

Dan*_*iel 47 elasticsearch

在我的elasticsearch服务器上:总文件:300万,总大小:3.6G然后,我删除了大约280万个文件:总文件:约0.13万,总大小:3.6G

我已经删除了文件,我该如何释放文件的大小?

knu*_*ker 79

删除文档只会将这些标记为已删除,因此不会搜索它们.要回收磁盘空间,您必须优化索引:

curl -XPOST 'http://localhost:9200/_optimize?only_expunge_deletes=true'
Run Code Online (Sandbox Code Playgroud)

文档:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-optimize.html

更新

与Elasticsearch 2.1.x的开始,optimize 已废弃青睐 forcemerge.API是相同的,只有端点确实发生了变化.

curl -XPOST 'http://localhost:9200/_forcemerge?only_expunge_deletes=true'
Run Code Online (Sandbox Code Playgroud)

  • 克努特的回答是正确的.这篇文章详细介绍了为什么会这样:https://www.found.no/foundation/elasticsearch-from-the-bottom-up/ (6认同)
  • 该指数分为几个部分.优化将合并这些段,同时删除过程中删除的文档.在合并期间复制索引数据,这是增加的来源.最坏的情况合并在合并期间需要2倍的当前索引大小,这样的大合并很可能需要数小时. (4认同)

Sri*_*ngi 21

在当前的elasticsearch版本(5.4)中,

  1. 优化所有指数:

    POST /_all/_forcemerge?only_expunge_deletes=true

  2. 优化单一索引

    POST /twitter/_forcemerge?only_expunge_deletes=true ,twitter是索引

参考:https://www.elastic.co/guide/en/elasticsearch/reference/5.4/indices-forcemerge.html#indices-forcemerge


Ste*_* E. 6

knutwalker 的回答是正确的。但是,如果您使用 AWS ElasticSearch 并想要释放存储空间,这将不太适用。

在 AWS 上,必须在 URL 中指定要伪造的索引。它可以包含通配符,这在索引轮换中很常见。

curl -XPOST 'https://something.es.amazonaws.com/index-*/_forcemerge?only_expunge_deletes=true'
Run Code Online (Sandbox Code Playgroud)

AWS 发布了 ElasticSearch API 差异列表