【问题标题】:Elasticsearch index by date search performance - to split or not to splitElasticsearch索引按日期搜索性能 - 拆分或不拆分
【发布时间】:2019-11-13 09:57:24
【问题描述】:

我目前正在使用 Elasticsearch (ES)。我们正在摄取传感器数据,3 年来,我们在一个索引中拥有大约 1,000,000,000 个文档,使索引大小约为 50GB。索引性能并不那么重要,因为新数据平均每 15 分钟才会到达每个传感器,因此我想专注于搜索和聚合性能。我们正在运行一个前端,基本上显示一个仪表板,显示上周与一年前相比的平均值等。

我在 AWS 上使用 ES,在一台机器上的性能很慢之后,我启动了一个包含 3 个数据节点(每个 2 个核心,8 GB 内存)的集群,并为索引提供了 3 个主分片和一个副本。在数据上投入计算能力肯定会改善这种情况,更多的能力会有所帮助,但我的问题是:

例如按月拆分索引会提高性能吗?或者更具体一点:如果我适当地调整查询,查询(尤其是按日期)较小的索引是否会更快,或者 ES 是否已经“知道”在哪里可以找到分片中的特定日期?

(我知道具有较小索引的其他好处,例如能够翻转并仅保留特定时间间隔等)

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    1/ 如果您的索引按日期字段排序,Elasticsearch 仅知道在索引中的何处查找特定日期。您可以查看documentation here

    在您的用例中,它可以显着提高搜索性能。并且由于自排序日期以来所有数据都将添加到“索引末尾”,因此您应该不会看到太多索引开销。

    2/ 如果没有索引排序,较小的时间限制索引会更好地工作(即使您针对所有索引),因为它通常允许重写或您的范围查询为 match_all / match_none 内部查询。

    有关此行为的更多信息,您应该阅读这篇博文:

    Instant Aggregations: Rewriting Queries for Fun and Profit

    【讨论】:

      猜你喜欢
      • 2011-08-25
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-01
      相关资源
      最近更新 更多