【发布时间】:2017-04-10 14:07:29
【问题描述】:
我正在使用 Elasticsearch 5.2.2,我想在密集的索引操作之后完全合并我的索引段。
我正在使用以下其余 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 没有这个问题。
谁知道如何完全合并这些片段?
谢谢大家!
【问题讨论】:
-
你能找到这个问题的答案吗?
-
我遇到了同样的问题,并通过在运行合并时暂停对集群的索引来解决这个问题。这样做时,我能够在 ES 6.x 上将段大小降低到 max_num_segments。
标签: elasticsearch optimization elasticsearch-5