在我的elasticsearch服务器上: 文件总数:300万,总规模:3.6G 然后,我删除了大约280万个文档: 文件总数:约0.13万,总规模:3.6G
我删除了文件,我该如何释放文件的大小?
答案 0 :(得分:72)
删除文档只会将这些标记为已删除,因此不会搜索它们。要回收磁盘空间,必须优化索引:
curl -XPOST 'http://localhost:9200/_optimize?only_expunge_deletes=true'
文档:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-optimize.html
从is deprecated optimize
开始使用Elasticsearch 2.1.x,forcemerge
favor of。
API为the same,只有端点发生了变化。
curl -XPOST 'http://localhost:9200/_forcemerge?only_expunge_deletes=true'
答案 1 :(得分:18)
在当前的弹性搜索版本(5.4)中,
优化所有指数:
POST /_all/_forcemerge?only_expunge_deletes=true
优化单个索引
POST /twitter/_forcemerge?only_expunge_deletes=true
,其中twitter是索引
答案 2 :(得分:1)
knutwalker的答案是正确的。但是,如果您使用的是AWS ElasticSearch,并希望释放存储空间,则将无法正常工作。
在AWS上,必须在URL中指定要合并的索引。它可以包含通配符,这在索引旋转中很常见。
curl -XPOST 'https://something.es.amazonaws.com/index-*/_forcemerge?only_expunge_deletes=true'
答案 3 :(得分:0)
用您的替换索引名。它将立即释放空间
curl -XPOST 'http://localhost:9200/indexname/_forcemerge' -d
'{"only_expunge_deletes": false, "max_num_segments": 1 }'