elasticsearch - 为什么在 Elasticsearch 中以昂贵的 CPU 方式合并段?

标签 elasticsearch lucene

我看到每次遇到ES高CPU问题,总是Lucene Merge Thread。

据我了解,段已经排序,所以您每次只是合并两个排序的段,就像合并排序的合并过程一样。为什么合并会如此昂贵。还是我遗漏了什么?

最佳答案

合并过程在 IO 和 CPU 上的成本很高的原因有几个:

  1. Lucene 使用Skip list 数据结构,它们的合并成本很高,有一篇关于Skip list merge 的好文章 here .
  2. 两个并行合并可以同时发生。
  3. Lucene 将需要创建第三个段并合并两个段,因此您需要足够的空间。

有一篇关于分段合并的好博文 here .

关于elasticsearch - 为什么在 Elasticsearch 中以昂贵的 CPU 方式合并段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67497626/

相关文章:

lucene - 在 Lucene 中,使用标准分析器,我想使带有空格的字段可搜索

elasticsearch - Elasticsearch索引以逗号​​分隔的值并将其用作过滤器

scala - Spark with Kafka streaming 保存到 Elastic search 性能低下

elasticsearch - 将自定义过滤器应用于Elastic Search中的聚合

java - 多术语 solr 同义词问题

java - 使用lucene 4删除文档并检索已删除文档的所有docId

elasticsearch - Elasticsearch 中的批量查询

elasticsearch - Kibana Logstash Elasticsearch |无法搜索未索引的字段

lucene - Mediawiki + Lucene : How To Strip Markup?

java - TextDatasetFactory 有问题