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的默认值。
我的理解是否正确?
对此有任何想法都会很有帮助。提前感谢。
1条答案
按热度按时间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