9.2 中的 ES|QL:Smart Lookup Joins 和时间序列支持

探索 Elasticsearch 9.2 中 ES|QL 的三个独立更新:增强的 LOOKUP JOIN 用于更具表现力的数据关联、新的 TS 命令用于时间序列分析,以及灵活的 INLINE STATS 命令用于聚合。

亲身体验 Elasticsearch:深入了解我们的示例笔记本,开始免费云服务试用,或立即在您的本地计算机上试用 Elastic。

10 月发布的 Elasticsearch 9.2 版本包含诸多重大改进,使数据分析比以往任何时候都更快、更灵活、更易访问。该版本的核心是对我们的管道式查询语言 ES|QL 的重要增强,旨在直接为终端用户带来更多价值。

下面将介绍 Elasticsearch 9.2 中的功能,这些功能将利用 ES|QL 改变您的数据分析工作流。

数据关联的革命:更智能、更快速、更灵活的 Lookup Join

在 Elasticsearch 9.2 中,ES|QL 中的 LOOKUP JOIN 命令发生了重大变化,变得更加高效和多功能。LOOKUP JOIN 将 ES|QL 查询结果表中的数据与指定查找模式索引中的匹配记录结合起来。它会根据连接字段中的匹配值,将查找索引中的字段作为新列添加到结果表中。以前,连接数据仅限于单一字段和简单相等。不再是这样了!这些增强功能使您能够轻松应对复杂的数据关联方案。

Lookup Join 的主要增强功能包括:

  • 多字段连接:轻松连接多个字段。例如,要将 application_logsservice_registry 连接到 service_nameenvironmentversion:
  • 使用表达式释放复杂的连接谓词(技术预览):

您不再局限于简单相等。LOOKUP JOIN 现在允许您指定多个相关性标准,并纳入一系列二进制运算符,包括 ==、 !=、<、>、<= 和 >=。这意味着您可以创建高度细致的连接条件,从而能够对数据提出更复杂的问题。

示例 1:使用按服务 SLA 阈值查找应用程序指标

示例 2:此查询根据随时间变化的地区定价政策计算应付金额。它根据复杂的日期范围和相等条件连接三个数据集,计算出最终的 due_amount。第二个查找连接使用 meter_readings 索引中的measurement_date 字段和customers 索引中的region_id 字段连接到pricing_policies 索引,并为特定 regionmeasurement_date 查找正确的定价策略。

  • 过滤连接带来的巨大性能提升:

我们提高了使用查找表条件筛选的“扩展连接”的性能。扩展连接会使每条输入行产生多个匹配项,从而产生较大的中间结果集。当后续筛选器丢弃其中许多行时,情况会变得更糟。在 9.2 中,我们通过在对查找数据应用筛选器时筛选掉不必要的行来优化这些连接,而避免处理将被丢弃的行。在某些情况下,这些连接的速度最多可以快 1000 倍

这种优化在处理“扩展连接”时至关重要,因为在这种情况下,查找最初可能会产生许多潜在的匹配项。通过智能推送筛选器,仅处理相关数据,从而大幅缩短查询执行时间,实现对海量数据集的实时分析。这意味着,即使是大型或复杂的连接操作,您也能更快地获得见解。

Lookup Join 跨集群搜索 (CCS) 兼容性:

当 Lookup Join 在 8.19 和 9.1 版本中正式发布时,它缺少跨集群搜索 (CCS) 支持。对于在多个集群中运行的组织,LOOKUP JOIN 现在可与 9.2 中的 CCS 无缝集成。只需在要执行连接的所有远程集群上放置查找索引,ES|QL 就会自动利用这些远程查找索引来连接远程数据。这简化了分布式数据分析,并确保在整个 Elasticsearch 部署中实现一致的丰富性。

这些改进意味着您可以以前所未有的精度、速度和便捷性关联各种数据集,从而发现更深入、更具可操作性的见解,而无需复杂的替代方案或预处理步骤。

轻松丰富您的数据:适用于 Lookup 索引的 Kibana Discover 用户体验

数据丰富应该简单,而不是障碍。我们在 Kibana 的 Discover 中为创建和管理查找索引引入了绝佳的全新用户体验。

直观的工作流:Discover 全面的自动完成功能将引导您完成整个流程,并在 ES|QL 编辑器中建议查找索引和连接字段,使您可以非常轻松地将上传的数据与现有索引连接起来。键入一个不存在的查找索引名称,然后直接访问 Lookup 编辑器,只需单击一下即可创建索引。键入现有查找索引的名称,我们将为您提供编辑该索引的选项:

在线管理 (CRUD):直接在 Discover 中使用行内编辑功能(创建、读取、更新、删除),使参考数据集保持最新状态。

轻松上传文件:现在,您可以在 Discover 中直接上传 CSV 等文件,并立即在 LOOKUP JOIN 中使用这些文件。再也不需要在 Kibana 的不同区域之间来回切换上下文了!

无论您是将用户 ID 映射到名称、添加业务元数据,还是连接静态参考文件,此功能都能让数据丰富化变得触手可及,将连接的强大功能直接交到每个用户的手中——快速、简单且集中于一处。

保留上下文:INLINE STATS 简介(技术预览)

数据聚合至关重要,但有时您需要在查看原始数据的同时查看聚合数据。我们很高兴将 INLINE STATS 作为技术预览功能推出。

STATS 命令会将输入字段替换为聚合输出,而INLINE STATS 命令则不同,它保留了所有原始输入字段,只是添加了新的聚合字段。这样,您就可以在聚合对原始输入字段执行进一步操作,从而提供更连续、更灵活的分析工作流。

例如,要在计算平均飞行距离的同时保留单个飞行记录行:

在此查询中,将 avgDist 与我们分组的相应 Dest (ination) 添加到每一行中,然后,由于我们仍有航班信息列,我们可以将结果筛选为飞行距离大于平均值的航班。

ES|QL 中的时间序列支持(技术预览版)

Elasticsearch 使用时序数据流来存储指标。我们将通过 TS 源代码命令在 ES|QL 中添加对时间序列聚合的支持。此功能在 Elastic Cloud serverless 和 9.2 基础版中以技术预览版的形式提供。

时间序列分析主要基于聚合查询,这些查询按照一个或多个筛选维度对时间分桶的指标值进行汇总。大多数聚合查询依靠两步处理,包括:(a) 内部聚合函数对每个时间序列的值进行汇总,以及 (b) 外部聚合函数将 (a) 的结果在时间序列之间进行组合。

TS 源命令与 STATS 结合使用,为表达对时间序列的查询提供了一种简洁而有效的方法。具体来说,请考虑以下计算每个主机和每小时的总请求率的示例:

在这种情况下,首先对每个时间序列和每个小时的时间序列聚合函数 RATE 进行评估。生成的部分聚合值随后使用 SUM 进行组合,以计算每个主机和每小时的最终聚合值。

您可以在此处查看可用的时间序列聚合函数列表。现在支持计数率,这可以说是处理计数器最重要的聚合功能。

TS 源命令旨在与STATS 结合使用,其执行经过调整,可有效支持时间序列聚合。例如,数据在进入STATS 之前要进行排序。目前不允许在 TSSTATS 之间执行可能丰富或改变时序数据或其顺序的处理命令,例如 FORKINLINE STATS。将来可能会取消这一限制。

STATS 表格输出可使用任何适用命令进行进一步处理。例如,以下查询计算每台主机和每小时的平均 cpu_usage 与最大值的比率:

时序数据存储在我们基于 Lucene 文档值的底层列式存储引擎中。TS 命令通过 ES|QL 计算引擎增加了向量化查询执行功能。与等效的DSL查询相比,查询性能往往提高一个数量级以上,并可与已建立的特定度量系统相媲美。我们将在未来提供详细的架构和性能分析,敬请期待。

扩展您的工具包:ES|QL 新功能

[@portabletext/react] Unknown block type "block", specify a component for it in the `components.types` prop

字符串操作:CONTAINSMV_CONTAINSURL_ENCODEURL_ENCODE_COMPONENTURL_DECODE,用于更强大的文本和 URL 处理。

时间序列和地理空间: TBUCKET用于灵活的时间分桶,TO_DENSE_VECTOR 用于矢量运算,以及一套全面的地理空间函数,ST_GEOHASHST_GEOTILEST_GEOHEXTO_GEOHASHTO_GEOTILETO_GEOHEX用于高级基于位置的分析。

日期格式:使用 DAY_NAMEMONTH_NAME,以获得更易读的日期表示形式。

这些功能为您提供了一套更丰富的工具,可直接在 ES|QL 中操作和分析您的数据。

内在优势:更高的性能和效率

除了上述突出的功能外,Elasticsearch 9.2 还对 ES|QL 进行了大量性能优化。在函数能够替代多个类似 RLIKE 查询的情况下,我们使用 pushdown 加快了 RLIKE(LIST) 的执行速度。通过 RLIKE (LIST),我们可以将这些查询合并为一个自动机,并应用一个自动机而不是多个自动机。我们还通过索引排序加快了关键字字段的加载速度,并对一般查询进行了优化——这些改进可确保您的 ES|QL 查询比以往更高效地运行。

立即开始!

Elasticsearch 9.2 标志着 ES|QL 的重大飞跃,为您的数据分析工作流带来了前所未有的强大功能和灵活性。我们鼓励您探索这些新功能,并体验它们带来的不同。

有关 Elasticsearch 9.2 中所有更改和增强功能的完整列表,请参阅正式发布说明。祝您查询愉快!

相关内容

准备好打造最先进的搜索体验了吗?

足够先进的搜索不是一个人的努力就能实现的。Elasticsearch 由数据科学家、ML 操作员、工程师以及更多和您一样对搜索充满热情的人提供支持。让我们联系起来,共同打造神奇的搜索体验,让您获得想要的结果。

亲自试用