elasticsearch - 如何在 Elasticsearch 5 中强制合并段?

标签 elasticsearch optimization elasticsearch-5

我正在使用 Elasticsearch 5.2.2,我想在密集的索引操作后完全合并索引的各个部分。

我使用以下 REST API 来合并所有片段:

http://localhost:9200/my_index/_forcemerge

(我还尝试在 POST 请求中添加 max_num_segments=1。)

ES 回复:

{
  "_shards": {
    "total": 16,
    "successful": 16,
    "failed": 0
  }
}

请注意,my_index 由 16 个分片组成。

但是当我询问节点统计信息( http://localhost:9200/_nodes/stats )时,它回复:

segments: {
    count: 64,
    [...]
}

所以看起来所有的分片都被分成了 4 个部分(64/16 = 4)。事实上,数据目录上的“ls”确认每个分片有 4 个段:

~# ls /var/lib/elasticsearch/nodes/0/indices/ym_5_99nQrmvTlR_2vicDA/0/index/
_0.cfe      _0.cfs      _0.si       _1.cfe      _1.cfs      _1.si       _2.cfe      _2.cfs      _2.si       _5.cfe      _5.cfs      _5.si       segments_6  write.lock 

并且没有并发合并正在运行( http://localhost:9200/_nodes/stats ):

merges: {
    current: 0,
    [...]
}

所有的force_merge请求都已完成(http://localhost:9200/_nodes/stats):

force_merge: {
    threads: 1,
    queue: 0,
    active: 0,
    rejected: 0,
    largest: 1,
    completed: 3
}

我在 ES 2.2 中没有遇到这个问题。

谁知道如何完全合并这些片段?

谢谢大家!

最佳答案

不知道您的问题是否解决了。只是在这里发帖让其他人知道。

这应该是一个错误。你可以看到以下问题。使用空的 json 主体可以使其工作。 https://github.com/TravisTX/elasticsearch-head-chrome/issues/16

关于elasticsearch - 如何在 Elasticsearch 5 中强制合并段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43325431/

相关文章:

regex - 如何从 logstash 中删除事件?

java - 其他方法中的eclipse auto getter和setter方法

javascript - 如何使用 else 语句优化这个 jquery 脚本?

sql - Elasticsearch 分组并获取第一条记录

javascript - 未捕获的类型错误 : Cannot read property 'Client' of undefined

django - 如何在Django Haystack中查询空的MultiValueField结果

elasticsearch - 不应将elastalert中的警报静音

c - 如何使我的递归 C 程序更有效率?

amazon-web-services - 无法将S3存储库注册到AWS Elasticsearch

java - Elasticsearch 中的文档索引,JAVA API