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

kzipqqlq  于 2022-11-22  发布在  ElasticSearch
关注(0)|答案(1)|浏览(119)

ElasticSearch版本:标准

我有一个在8个不同节点中有8个碎片的ElasticSearch索引,文档数超过2500万个文档。(嵌套不包括在内)。这是一个沉重的更新索引。文档的大小增长了一段时间,因为删除的文档。我做了一个关于这个问题的搜索,并阅读了像下面这样的博客,它告诉一个当段中的已删除文档计数大于50%时,该段将自动合并。
https://discuss.elastic.co/t/too-many-deleted-docs/84964/4
我对索引执行了**/_segment**,发现了如下所示的段

"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"
                                }
                            },

/_segment调用的完整响应可在此处找到
https://drive.google.com/file/d/1mLE2xw0u7lnogHnfzz65rWCBS8JrcnNm/view?usp=sharing
在许多段(如上面的段)中,deleted_docs计数超过num_docs****的75%,但仍未合并。我们尚未设置任何max_merged_segment,因此默认值为5gb。我们也未更改任何Mergepolicy,并使用Es版本7.10.0的默认值。
我的理解是否正确?
对此有任何想法都会很有帮助。提前感谢。

xesrikrc

xesrikrc1#

num_docs只包含当前的文档,不包括已删除的文档。
因此,在本例中,我们在总共51,192,664(27,901,732 + 23,290,932)个文档中删除了23,290,932个文档,这意味着在该段中删除了45.5%,因此没有发生段合并。

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

相关问题