Elastic Stack 8.9:更快的跨集群搜索和指标聚合

作者:Tyler Perkins, Gilad Gal, Teresa Soler, Shani Sagiv, Bernhard Suhm, George Kobar

Elastic Stack 8.9 在多个方面实现了显着的性能改进:Kibana® 中更快的跨集群搜索、Elasticsearch® 更快的聚合,以及更快、更相关的向量搜索(阅读 Elastic Search 8.9 博客以了解更多信息)。 这些性能增强可加速大规模洞察,并使 Elastic® 的矢量搜索成为相关性和速度方面的领导者。 此外,还可以利用 Kibana 中的多项增强功能、地理线的简化聚合以及使用 Terraform 从单个位置简化跨集群警报规则的管理。

这些新功能使客户能够:

  • 指标聚合速度提高 90% 以上
  • 将跨集群搜索的延迟减少高达 80 倍
  • 使用 Terraform 从一个位置管理跨多个集群的警报规则

Elastic Stack 8.9 现已在 Elastic Cloud 上推出,这是唯一包含最新版本中所有新功能的托管 Elasticsearch 产品。 你还可以下载 Elastic Stack 和我们的云编排产品 Elastic Cloud Enterprise 和 Elastic Cloud for Kubernetes,以获得自我管理的体验。

Elastic 8.9 中还有哪些新功能? 查看8.9公告帖子了解更多>>

指标聚合延迟的根本改进

作为时间序列数据库 (TSDB) 项目的一部分,与优化 Elasticsearch 指标数据相关,我们致力于改善指标数据经常使用的聚合的延迟。 我们专注于 Kubernetes 指标,并在聚合延迟方面实现了一到两个数量级的改进(即,运行相关聚合所花费的时间是 8.9 之前的 10% 到 1%)。

让我们检查一下详细信息和相关的公开每天基准:

  • 我们改进了 Elasticsearch 的默认刷新行为。 默认情况下,仅当分片处于搜索活动状态时才会发生刷新,并且分片在搜索活动 30 秒后进入搜索空闲状态。 当分片处于搜索空闲状态时,不会发生计划刷新,这有利于索引吞吐量。 然而,搜索一个搜索空闲分片可能会显着增加查询时间 - 这在 Kibana 中加载可视化时会很明显,因为在闲置一段时间后,仪表板加载速度会很慢。 我们进行了两项更改,将聚合搜索的延迟减少了 90% 以上,因为分片处于搜索空闲状态。
    • 我们改进了搜索 api 的 can match 阶段,有时无需执行任何与搜索相关的 I/O 即可确定查询是否与分片不匹配。 对于查询不存在的字段或不匹配的常量关键字字段的特定查询,我们可以跳过整个分片,而无需在数据节点上执行任何与搜索相关的 I/O。 这改进了默认刷新行为,因为分片保持搜索空闲状态并且不会发生计划刷新。
    • 当分片处于搜索空闲状态并且确实需要进行刷新时,刷新会立即执行,而不是让刷新调度程序启动。 这减少了搜索空闲分片时的延迟,并将查询时间减少了 1 秒以上(具体改进取决于数据节点上分配的分片数量)。
  • 我们改进了基数聚合的能力,以识别某些文档集无法添加新值,因此不应将其作为基数聚合运行的一部分进行检查。 此优化导致基数聚合改进超过 85%,在某些条件下超过 99%。
  • 我们改变了使用直方图的方式,从 AVL 树更改为合并,以一点点准确度(从大约 0.1% 的错误更改为大约 1% 的错误)换取大量聚合延迟改进(聚合运行速度提高两倍到 50 几倍)。 此改进会影响一组聚合,包括百分位数、百分位数排名等。

从我们的公开每天基准中 降采样(downsample)性能改进

跨集群搜索速度更快,网络行程更少

跨集群搜索 (CCS) 可让你将多个 Elasticsearch 集群联合到一个 Kibana 或搜索端点中,以帮助满足你的数据本地化、监管和合规性以及扩展需求。 集群可以位于世界任何地方、Elastic Cloud 中,或者位于你自己的云或本地自我管理部署中。

作为一个分布式系统,Elasticsearch 会受到网络延迟的影响。 这种情况在跨集群设置中会被放大,其中搜索必须通过网络展开到多个集群以及这些集群内的节点。 网络行程越多,网络延迟对性能的影响就越大。 传统上,如果不使用我们称为 "最小化往返" 的选项,跨集群搜索就会涉及大量网络行程。

即使使用 CCS,search API 也支持最小化往返,但是当 Kibana 通过 CCS 进行搜索时,它在幕后使用 async_search API,该 API 不支持最小化往返。 我们在 8.9 中通过在异步搜索中添加对 ccs_minimize_roundtrips=true 的支持解决了该限制。 Kibana 8.9 默认使用此模式。

随着更多分片的参与,性能增益会增加。 我们运行了跨集群搜索操作的基准测试,模拟了具有不同数量的远程集群的典型 Kibana 使用场景 ------ 最多 150 个集群,总共 150,000 个分片! 在这些测试中,我们发现常见任务(例如加载 "Discover" 页面或仪表板)在最小化往返次数时加载速度提高了 10 到 80 倍。

有时我们还看到,随着我们添加更多远程集群,平均时间(下面的粉红色条)保持更加一致。

在不最小化往返的情况下,它往往会更明显地增加。

总体而言,我们预计在 8.9 中使用 CCS 时速度会有显着提高。

针对冷和冰冻层进行更快、更可靠的 CCS 搜索

我们还改进了针对可搜索快照(冷或冻结层数据)的远程搜索,并优化了分片跳过。 本地搜索(非 CCS)可以使用集群状态信息过滤(跳过)不相关的分片,将搜索请求的时间范围与分片元数据中的最小和最大时间戳进行比较。 到目前为止,CCS 在不最小化往返行程时不支持这种分片跳过机制。

在 8.9 中,我们在远程集群中执行搜索的 can_match 阶段。 这使得搜索在使用和不使用 CCS 的情况下表现相似,因为协调节点可以确定要跳过哪些分片,这对于冷索引和冻结索引尤其重要。 这可以通过不那么频繁地访问远程集群来改善本地和远程集群之间存在延迟的情况。 请注意,此优化仅在不最小化往返行程时才相关。 最小化往返的跨集群搜索已经具备了这种能力。 在 8.9 中,无论哪种方式都可以满足你的需求。

查找与运行状况报告相关的 ILM 策略

索引生命周期管理 (ILM) 可自动执行你的数据管理工作,执行 rollover、shrink、merge、downsample 操作等,并将数据从一层移动到下一层,以便你可以优化成本和性能权衡。 它通过一系列操作(rollover、shrink等)和步骤(等待活动分片等)来实现这一点。 如果 ILM 在某个步骤中停留太久,数据可能会堆积在错误的层中并导致问题。

为了帮助你尽早注意到 ILM 陷入困境,我们增强了运行状况报告 API (Health Report API)中的 ILM 运行状况指示器。 新规则将随时根据当前操作和步骤检查 ILM 策略管理的所有索引。 例如,如果索引处于 rollover > wait-for-active-shards 组合超过 24 小时,或者步骤 wait-for-active-shards 已重试超过 100 次,则指示器将变为黄色。

可以使用运行状况指示器设置(health indicator settings)更改时间和重试阈值。

该指示器还将显示在 Elastic Cloud Deployments 控制台中。 你可以更快地识别可能导致集群性能或稳定性问题的问题。 与运行状况报告的其余部分一样,我们将指出可能的影响并包含相关故障排除指南的链接。

地理线简化

地理数据的一个流行用例是资产(asset)生成位置的时间序列,每个位置都有自己的时间戳,并且系统允许根据该时间序列跟踪资产。 Elasticsearch 现在支持简化算法,允许基于位置点的较小子集(由 "size" 参数定义)生成一条线,同时最大限度地减少由此产生的不准确性。 此功能基于时间序列索引模式基础架构 (TSDS)。 这种简化减少了内存消耗,并支持基于大量位置创建复杂的地理线。 地理线简化在技术预览版中发布。

可视化和规则管理的增强

Elastic 8.9 对现有 Kibana 功能进行了许多增强 - 我们在下面重点介绍其中两个。 此外,"规则即代码(Rules as code)" 通过利用 Terraform 复制规则并应用版本控制,显着简化了集群中多个节点的规则管理,这有助于维护可观察性和安全问题的监控规则。

Kibana 堆积条形图图例

堆叠条形图图例的顺序现在基于受欢迎程度,最重要的元素显示在顶部。 你不再需要滚动到图例底部即可查找图表中最受欢迎的数据。

之前:

从 8.9 开始新增:

Kibana Lens 阶梯曲线视觉

Lens 现在支持折线图的三个新选项。 三个选项是直线、平滑和阶梯。 阶梯曲线折线图可以帮助用户清楚地看到数据何时以不规则的间隔变化,这有助于避免误解。 创建可视化时,在可视化类型下拉列表中选择线。 然后使用视觉选项菜单在直线插值下拉列表中选择直线(straight)、平滑(smooth)或步进(step)。

8-9-platform-blog-visual-options-menu

规则即代码

Terraform Elastic Stack 提供程序发布了一项新功能,允许用户在 Kibana 中管理其警报规则和连接器。 这使用户能够自动化手动流程,从一个位置管理多个集群,并解锁更多用例,例如版本控制。

等待 ... 还有更多!

8.9 发布公告博客中查看搜索、可观察性或安全性方面的哪些其他增强功能可能与你相关! 有关前面提到的功能的更多信息,请参阅 8.9 Elasticsearch 的新增功能8.9 Kibana 的新增功能,了解更多详细信息。 最后,发布说明将为你提供 Elastic 8.9 提供的所有增强功能的完整列表。

试试看

现有 Elastic Cloud 客户可以直接从 Elastic Cloud 控制台访问其中许多功能。 没有利用云上的 Elastic? 开始免费试用

原文:Elastic Stack 8.9: Faster aggregations and cross-cluster searches | Elastic Blog

相关推荐
woshiabc11138 分钟前
windows安装Elasticsearch及增删改查操作
大数据·elasticsearch·搜索引擎
arnold664 小时前
探索 ElasticSearch:性能优化之道
大数据·elasticsearch·性能优化
成长的小牛2336 小时前
es使用knn向量检索中numCandidates和k应该如何配比更合适
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客7 小时前
Elasticsearch:什么是查询语言?
大数据·数据库·elasticsearch·搜索引擎·oracle
启明真纳8 小时前
elasticache备份
运维·elasticsearch·云原生·kubernetes
幽弥千月17 小时前
【ELK】ES单节点升级为集群并开启https【亲测可用】
elk·elasticsearch·https
运维&陈同学17 小时前
【Elasticsearch05】企业级日志分析系统ELK之集群工作原理
运维·开发语言·后端·python·elasticsearch·自动化·jenkins·哈希算法
Y编程小白1 天前
Git版本控制工具--基础命令和分支管理
大数据·git·elasticsearch
酱学编程2 天前
ES搜索原理
大数据·elasticsearch·搜索引擎
龙少95432 天前
【SpringBoot中怎么使用ElasticSearch】
spring boot·elasticsearch·jenkins