【发布时间】:2020-05-10 21:50:51
【问题描述】:
问题:我在 Elasticsearch 上每天使用一个分片创建一个索引。当我对这些索引的几天执行查询时,它非常慢。任何实施过类似架构的人是否会就可以更改哪些内容以提高查询效率提供一些指导?
系统说明:
- 为time-base indices 使用elasticsearch hot-warm-cold 架构
- 每天140MB左右的数据索引
- 每个索引一个分片。
- 指数在热阶段停留 1 天
- 从第 1 天到第 60 天处于温暖阶段
- 从第 60 天到第 180 天,指数进入冷阶段。之后就被删除了
- 我们的 ES 集群的健康指标看起来还不错。好像没有太多的CPU,内存压力
集群上的机器描述如下。 高 IO 用于 HOT 阶段。 高存储用于暖和阶段。如图所示,数据在两个区域中复制。
问题描述:
当我对这些索引进行查询时,查询速度非常慢。为了说明这一点,我对单个 _id 执行了查询。它需要超过 40 秒。下图是该查询的 kibana 输出。
在我看来,ES 并没有并行执行每个索引的查询。因为当我去分析器时,它所花费的总时间似乎是每个索引的时间总和。下面是反映分析器结果的图像,同时也在查询 _id
也在ES论坛发帖:https://discuss.elastic.co/t/elasticsearch-query-over-multiple-indexes-very-slow/216520
【问题讨论】:
-
请提供更多详细信息:您的集群是由什么组成的?不。每个 ILM 阶段、角色、内存、cpu/核心的机器数?分片分配已激活?
-
@ibexit,我用集群的结构更新了这个问题。在我看来,我对 ES 如何查询这些索引一无所知。在这种情况下,索引过多似乎不是一个好主意。但是,我在互联网上看到过有关人们使用每日索引将数据存储在这种热-温-冷架构中的帖子
-
与此同时,我查看了 AWS 规范:aws.amazon.com/ec2/instance-types/?nc1=h_ls。您的节点中的 cpu 计数非常低。也看看这个:elastic.co/guide/en/cloud/current/ec-reference-hardware.html 在我看来,共享基础设施的 CPU/核心数量太少了。请记住,还有文档传入,也需要一些 cpu。
-
通过将每日索引合并为每月索引来减少工作量或尝试使用更强大的节点。
-
@ibexit,感谢您花时间在这里回复。我正在研究如何合并这些索引。对于我所能找到的一切,似乎它不能作为 ILM 的一部分来完成。它需要作为重新索引来完成。我正在关注这个:blog.nviso.eu/2019/05/06/…
标签: database elasticsearch nosql elastic-stack