Elasticsearch 查询语言(ES|QL)自 8.14 版起全面可用,它引入了一种专为搜索、可观察性和安全调查而设计的查询语言和引擎。与大量借鉴现有管道式语言的 OpenSearch 管道式处理语言 (PPL) 不同,ES|QL 是从头开始构建的,专注于 Kibana 平台的完善性、可用性和无缝集成。
在本博客中,我们将通过比较 Elasticsearch 9.1 中的 ES|QL 编辑器和 OpenSearch 3.2 中事件分析器(简称 PPL)中的 PPL,来探讨开发人员对 ES|QL 编辑器的体验。
两者之间的差异很快就显现出来:ES|QL 编辑器提供智能自动完成、上下文帮助、推荐查询和跨集群查询支持,不仅能帮助初学者,还能帮助专家级用户。针对 ES|QL 编写的周到设计还体现在通过 Kibana 工作流(例如最近查询)进行的集成查询检查和整体集成。
相比之下,PPL 缺乏对自动完成、上下文引导和分布式查询的类似支持,因此学习曲线更陡峭,试错更多。
使 ES|QL 更易于学习和使用
开始使用一种新的查询语言往往会让人感到不知所措。ES|QL 编辑器直接内置于 Kibana Discover 中,不仅支持查询创建和调试,还能加快熟悉和掌握该语言的速度,从而简化这一过程。由于编辑器有助于减少日常工作中的摩擦,您可以将注意力从语法和试错转移到解决问题上。您可以在这里了解更多有关这些原则以及我们如何将其融入编辑器的信息。
这种编辑器体验并不局限于 Discover;它是一种可重复使用的代码模块,我们正在努力将其集成到 Kibana 的其他部分,如仪表盘、Kibana 警报和 Kibana 地图。
智能自动完成:加速创建查询
ES|QL 编辑器中的自动完成功能非常全面,可为兼容函数、参数、字面量甚至嵌套函数提供建议,而这正是 PPL 所缺乏的功能。事实上,它已经从头开始重建,正如这里所概述的那样。
如这里所述,验证会在用户键入时运行,并对字段提出建议,还会在出现错误时通知用户。这减轻了用户的心理负担,有助于在查询创建过程的早期防止错误。
举例说明:在此嵌套中建议使用字段和兼容函数:

这是 PPL 不支持的:

即使有智能自动完成功能指导你使用兼容函数、参数和嵌套函数,你可能还是希望对可用选项有更深入的了解。这正是 ES|QL 编辑器的上下文帮助变得非常有价值的地方,它提供即时的编辑帮助,以澄清和加强您的查询开发。
触手可及的上下文帮助
点击 Ctrl 键-空格键,即可获得有关自动完成功能生成的命令的其他信息。立即出现一个面板,显示有关函数、参数或字段的详细信息。这种轻量级交互让开发人员始终处于工作流程中,为他们提供及时指导,而不会迫使他们离开编辑器或搜索外部文档。这样可以减少在语法查找上浪费的时间,并有助于在常见错误发生之前加以预防。
下面是它的实际效果:

PPL 缺乏这种级别的嵌入式指导,用户只能依赖外部文档或反复试验。这种缺失不仅仅是功能上的缺失,它还凸显了设计理念上更广泛的差异。ES|QL 优先考虑贴心的上下文感知体验,以适应用户的数据和工作流程。随着查询复杂度的增加,这种差异会变得更加明显,从而使 ES|QL Editor 成为一个更高效、更可靠的学习和生产环境。
建议使用可感知数据上下文的查询
ES|QL 编辑器会根据您正在处理的数据(如日志)自动提供推荐查询。它不是提供一个空白的编辑器,而是为常见用例提供最相关的出发点。选择 "推荐查询 "可生成一个标准查询,该查询可立即使用,并可根据需要进一步完善。这种方法加快了查询的开发速度,尤其是对于尚未掌握全部语法的新用户而言。
下面是一个用户选择 "检测变化点 "查询的示例:

将其与 PPL 的经验进行比较:

相比之下,PPL 在这里只提供基本的自动完成功能,让您在没有上下文或结构的情况下拼凑查询。缺乏指导可能会导致挫败感和反复试验。有了 ES|QL Editor 的数据感知推荐查询,您就可以避免从头开始或死记硬背常规任务的语法。编辑器可减少认知负荷,有助于防止出错,让你专注于解决问题和更广泛的目标,如运行跨集群搜索,而不是费力地构建查询。
直观的跨集群查询
ES|QL 编辑器的自动完成功能依然卓越,即使在使用CCS 处理多个远程群集时也是如此。原因就在这里:
ES|QL 编辑器甚至可跨集群提供无缝自动完成功能
ES|QL 编辑器中的自动完成功能不仅支持群组名称,还支持 本地和远程索引。正如本文所介绍的那样,这要归功于协调器节点架构,它可以帮助验证和生成查询计划,然后发送给本地节点,执行查询并汇总结果,最后再发送给用户。在不输入远程群集全名的情况下,键入": "可启动远程索引的自动完成程序。而且,您也不局限于前缀。
这样就可以轻松地在分布式数据集上发现和查询数据,而无需记住命名约定或切换上下文。
下面是一个示例,用户只需键入 "clu:g "即可定位远程索引:

与此形成鲜明对比的是,PPL 只为本地索引提供基本的补全功能,建议仅限于前缀匹配。远程群组必须手动键入,这会增加出错的可能性,并减慢查询创建速度。

PPL 仅为本地索引提供补全,建议仅限于前缀:

ES|QL 更进一步, 允许 直接使用负号 排除 ,让您可以精细控制哪些集群参与探索。这种功能在处理混合环境时尤为重要,因为在混合环境中,您可能希望在跨集群调查时包含或省略特定的数据集。

这些增强功能反映了 Elasticsearch 对减少跨集群搜索摩擦的广泛关注。通过使分布式查询更易于构建和管理,ES|QL Editor 使分析师和开发人员能够专注于洞察力而不是语法,而 PPL 则将更多的负担留给了用户。ES|QL 编辑器不仅简化了跨集群查询的创建,还提供了检查这些查询执行情况的工具,确保跨多个集群的透明度和性能监控。
使用 Inspect 工具分析跨群集搜索详情
检查工具可从 ES|QL 编辑器访问,旨在提供元数据,明确说明所有集群的查询执行情况。该功能已在 Kibana Discover 中启用,并可在查询检查器中直接访问,使您能够分析搜索进度和详细信息,这对于跨集群搜索(CCS) 尤为重要。该功能可帮助您监控搜索进度,了解查询在分布式数据集上的执行情况。

这种对查询执行的详细可视性,尤其是对复杂的分布式搜索的可视性,使您能够确保最佳性能和故障排除。
除了了解单个查询的机制外,ES|QL 编辑器还通过在整个 Kibana 平台上深度嵌入基本功能,促进无缝、不间断的工作流程,从而进一步增强用户体验。
使用 ES|QL 和 Kibana 的统一查询体验
查询驱动分析中最常见的摩擦源之一是上下文切换。您经常需要回忆已经写过的查询。每一次中断都会打断注意力,延缓调查进度。ES|QL Editor 通过在 Kibana 中集成查询历史记录来解决这一问题。
最近的查询
ES|QL 编辑器中的 "最近查询 "功能可让您即时访问过去的工作,从而帮助您保持工作流畅。在 Discover 的 ES|QL 编辑器中,您可以查看、重新运行最近的 20 个查询,并将其设为星级,确保只需点击一下就能完成常用或复杂的查询。这些保存的查询还可在 Kibana 中使用,并与仪表盘、可视化、警报和地图集成,因此您无需离开当前屏幕或从头开始重新输入命令。这减少了重复性工作,加快了调查速度,并最大限度地降低了出错风险。
例如,用户可以在发现中使用 ES|QL 编辑器中的最近查询(并将其设为星级):

最近的查询已集成到仪表板中:

PPL 不提供类似功能,用户只能依靠手动复制粘贴或外部注释来重复使用查询。这种区别不仅仅是为了方便;它反映了 Elastic 将 ES|QL 打造为 Kibana 生态系统中真正集成语言的战略。通过最近查询等功能,ES|QL 编辑器不仅简化了日常工作流程,还为技术预览版中更高级的功能奠定了基础,确保用户体验不断发展。
结论
ES|QL 不仅仅是一种语法,它还反映了 Elastic 改进用户搜索、探索和分析数据方式的战略。通过智能自动完成、上下文感知的推荐查询、编辑器内指导以及检查等工具,ES|QL Editor 可加快学习速度、减少错误并简化跨集群分析等复杂的工作流程。它与 Kibana 集成,可将查询与仪表盘、警报和可视化无缝连接,从而实现不间断的工作流程。
总之,ES|QL 不仅仅是另一种管道语言;它是一个经过深思熟虑设计的查询引擎,搭配直观的用户界面,从根本上重新定义了您与数据交互的方式,提供了一种集成、智能和不断发展的体验,与 OpenSearch PPL 通常按部就班、缺乏指导的性质形成鲜明对比。
下一步行动
本博客仅涉及 ES|QL 的表面。今后的文章将深入探讨与 OpenSearch PPL 的比较,并探索地理空间、可视化和即将推出的编辑器功能,如控制(已在仪表板中提供)、多数据探索选项卡、后台搜索、更丰富的查询历史和 FUSE。
立即试用 ES|QL
您可以通过 免费试用 在完全托管的 Elasticsearch Serverless 项目中查看 ES|QL。从 8.11 开始的版本中也有该功能,但在8.19 和 9.1 中体验最佳。
只需一条命令,几分钟即可在本地环境中开始使用:




