elasticsearch 在读写索引上仅使用删除强制合并可以吗?,elasticsearch,elasticsearch" /> elasticsearch 在读写索引上仅使用删除强制合并可以吗?,elasticsearch,elasticsearch" />

elasticsearch 在读写索引上仅使用删除强制合并可以吗?

elasticsearch 在读写索引上仅使用删除强制合并可以吗?,elasticsearch,elasticsearch,根据文件: 应仅针对只读索引调用强制合并。与读写索引合并的运行力可以产生非常大的段(每段5GB),合并策略将不再考虑合并,直到它主要由删除的文档组成。这会导致非常大的片段保留在碎片中 但是,我不确定在读写索引上运行forcemerge和only\u expunge\u deletes是否可以。使用仅删除选项是否仍然存在生成非常大段的风险?如果是这样,当未手动调用forcemerge时,ES通常如何回收空间?如引用的文档中所述,应仅在只读索引上调用forcemerge 要回答您的问题,请在后台删除

根据文件:

应仅针对只读索引调用强制合并。与读写索引合并的运行力可以产生非常大的段(每段5GB),合并策略将不再考虑合并,直到它主要由删除的文档组成。这会导致非常大的片段保留在碎片中


但是,我不确定在读写索引上运行
forcemerge
only\u expunge\u deletes
是否可以。使用
仅删除
选项是否仍然存在生成非常大段的风险?如果是这样,当未手动调用
forcemerge
时,ES通常如何回收空间?

如引用的文档中所述,应仅在只读索引上调用forcemerge

要回答您的问题,请在后台删除并删除过程中删除的文档,因此您不必担心这一点


你可以想象这是如何发生的。

谢谢,这很有见地。我一定会看录像的。关于ES不断合并的部分,我有一个生产集群,在更新了很多文档后,它切换到黄色状态。集群缺少可用存储空间,因为旧文档没有被删除(我的意思是没有任何文档,即使删除阈值远远超过)。我运行了
forcemerge
only_expunge_deletes
(由于集群状态,索引始终是只读的),幸运地解决了问题。如果ES不断地合并段,那么空间应该被更快地回收,不是吗?是的,它应该被回收。但是,合并也需要可用空间(可能是已用空间的两倍,有时甚至更多),因此如果空间不足,背景合并可能不再自动进行。