当删除的文档数大于50%时,ElasticSearch段合并不会发生



弹性搜索版本:7.10.0

我有一个弹性搜索索引,在8个不同的节点中有8个碎片,文档数超过2500万个文档(嵌套不包括(。这是一个很重的更新索引。由于删除了文档,文档大小会在一段时间内增长。我在这个问题上做了一个搜索,并阅读了下面这样的博客,告诉当片段中被删除的文档数超过50%时,该片段将自动合并

https://discuss.elastic.co/t/too-many-deleted-docs/84964/4

我为索引做了/_Sections,发现了类似以下的片段

"segments": {
"_bbx": {
"generation": 14685,
"num_docs": 27901732,
"deleted_docs": 23290932,
"size_in_bytes": 5071187083,
"memory_in_bytes": 137008,
"committed": true,
"search": true,
"version": "8.7.0",
"compound": false,
"attributes": {
"Lucene87StoredFieldsFormat.mode": "BEST_SPEED"
}
},

在中可以找到段呼叫的完整响应(_S(

https://drive.google.com/file/d/1mLE2xw0u7lnogHnfzz65rWCBS8JrcnNm/view?usp=sharing

在许多段(如上面的段(中,deleted_docs计数超过num_docs的75%,但仍未合并。我们没有设置任何max_merged_segment,因此默认值为5gb。我们也没有更改任何MergePolicy,并且从Es版本7.10.0开始使用默认的MergePolicy。

我的理解正确吗?

对此有任何想法都会有所帮助。提前谢谢。

num_docs只包含当前文档,不包括已删除的文档。

因此,在这种情况下,在总共51192664(27901732+22390932(个文档中,我们有23290932个被删除的文档,这意味着45.5%的文档在该细分市场中被删除。因此,分段合并没有发生。

注意:在弹性搜索论坛上发布了同样的问题,得到了回复https://discuss.elastic.co/t/elasticsearch-segment-merge-not-happening-when-deleted-documents-count-is-greater-than-50/277209

最新更新