2

这是我之前的问题的延续,大量已删除的文档计数是否会影响与我的 ES 索引中已删除文档相关的 ES 查询性能。

正如答案中所指出的,我使用了优化 API,因为我使用的是 ES 1.X 版本,其中强制合并 API不可用,但是在阅读了优化 API github 链接(之前提供,因为在 ES 网站上找不到它)之后由说班农是弹性的创始人,看起来它做同样的工作。

运行优化 API 后,我收到了索引的成功消息,但我没有看到已删除文档的总数减少,我很担心,因为当我使用Segment API 检查索引的段时,我看到有超过 25 个每个分片的段和每个分片在内存中保存 250-1 GB 的数据和近 500k 文档,而我看到有一些分片中删除的文档很少。

所以我的问题是:

  1. 我的索引在多个数据节点上有多个分片,当我只使用 1 个节点 URL 运行优化 API 时,它是否只合并该节点上的段?
  2. 在段 API 结果中,它显示了类似的节点 ID "node": "f2hsqeamadnaskda",而我正在使用 KOPF 插件并为我的数据节点提供自定义名称,所以我如何将这个神秘的节点名称与我的人类可读节点名称相关联,以识别语句 1 是否正确或不是?
  3. 由于没有关于优化 API 的文档,是否可以一次合并跨所有节点的所有分片上的段?我需要在应用之前将索引设为只读吗?
4

2 回答 2

0

force_merge 或优化调用被应用于整个索引,您不必在节点级别执行它们。

您可以使用_cat api查找nodeid:Ip 映射。如果您的版本不支持_cat api (< 1.0),请使用集群状态api

于 2020-02-16T01:06:46.393 回答
0

@Nirmal 已经回答了你的前两个问题,所以:

  1. 由于没有关于优化 API 的文档,是否可以一次合并跨所有节点的所有分片上的段?我需要在应用之前将索引设为只读吗?

有适用于 1.x 的文档:https ://www.elastic.co/guide/en/elasticsearch/reference/1.7/indices-optimize.html 。您可能正在寻找这样的电话:

  • GET <index_pattern>/_cat/segments:列出所有分片中的所有段(可以是数千个)。还列出已删除的文档。
  • POST <index_pattern>/_optimize?max_num_segments=1:强制将所有段合并为每个分片 1 个单段。当不再写入索引时执行此操作。它有助于减少数据节点上 CPU/RAM 的负载。
  • POST <index_pattern>/_optimize?only_expunge_deletes=true:仅删除已删除的文档

最后,您可以使用*as<index_pattern>在整个集群上执行所有索引。

于 2020-02-17T12:38:29.650 回答