在ElasticSearch中批量更新后如何恢复空间?

时间:2018-10-10 12:10:41

标签: elasticsearch

我们的索引约为20GB;这些文档有几个大字段,其中许多现在是多余的。

因此,为了恢复服务器上的空间,我决定使用批量更新将这些字段设置为空。

我使用以下形式的代码测试了少量实例:

POST myindex/doc/_bulk
{"update":{"_id":"ccp-23-1002"}}
{"doc" : { "long_text_1":"", "long_text_2":""}}
{"update":{"_id":"ccp-28-1007"}}
{"doc" : { "long_text_1":"", "long_text_2":""}}

这很好,我进行了搜索,结果显示在指定文档上,long_text_1和long_text_2字段为空白,其他字段未更改。

因此,我编写了脚本,以在索引中的所有文档上一次运行上述内容,一次运行1000个。经过几次检查后,我使用

在控制台中检查了数据
GET _cat/indices?v&s=store.size&h=index,docs.count,store.size

...这表明尽管所讨论的索引具有相同数量的文档,但store.size却变大了,而不是变小了!

大概是在每次更新后发生的情况,都创建了一个新文档,其数据与旧文档相同,但更新请求中指定的字段有所更改;并且旧文档仍位于索引中,大概标记为已死,但占用了空间。因此,该练习与预期效果完全相反。

所以我的问题是,如何指示ES压缩索引或以其他方式回收该死空间?

0 个答案:

没有答案