作者:来自 Elastic Tomás Murúa

让我们回顾一下 ES|QL 的历史和它的改进。

更多阅读,Elasticsearch:ES|QL 查询展示。

Elasticsearch 配备了众多新功能,帮助你为自己的用例构建最佳搜索方案。查看我们的示例笔记本了解更多内容,开始免费云试用,或在本地机器上试用 Elastic。


自首次发布以来,ES|QL 一直在不断发展。引入了新的命令、函数和功能,以覆盖更多用例。本文将回顾该语言在各版本中的成长过程以及每次更新所带来的变化。

什么是 ES|QL?

ES|QL(Elasticsearch Query Language)是一种管道式查询语言,用于处理 Elasticsearch 中的数据。它允许用户通过一系列命令来过滤、转换和汇总数据,并以 JSON 或(在指定时)表格格式返回结果,可通过 _query API 直接集成到后端工作流,或在 Kibana 中用于可视化、仪表板和告警。

ES|QL 的推出旨在简化常见的数据分析流程,减少在工具或查询语言之间切换的需要。它的目标是提供一种一致、可读性强的语法,适用于可观测性、安全性和通用用例,让你可以从一个入口轻松对 Elasticsearch 数据提出复杂的问题。

例如,一个简单的 ES|QL 查询可能如下所示:

FROM kibana_sample_data_logs
| WHERE @timestamp > NOW() - 1d
| KEEP @timestamp, response, message, tags
| SORT response DESC

使用示例网站日志数据集生成的示例。

我们已经撰写了许多关于 ES|QL 的文章,推荐你阅读:

  • 新加入 Elasticsearch 仓库:ES|QL

  • 从梦想走向现实:宣布 Elastic 的管道查询语言 ES|QL

  • ES|QL 入门指南(Elasticsearch Query Language)

  • Elasticsearch 管道查询语言 ES|QL 现已正式发布

  • ES|QL,用于搜索 —— 引入评分和语义搜索

  • 还有更多!

以下是从初始发布开始的 ES|QL 各版本更新摘要。

发布前

在首次公开发布(8.11)之前,ES|QL 已经开发了一年多。团队在 Elasticsearch 内部设计并构建了一个专用的计算和查询引擎,以便在靠近数据的位置进行高级处理。

Elasticsearch 8.11(技术预览)

ES|QL 作为一种管道查询语言在技术预览版中首次引入,经过数月开发,旨在简化数据分析流程。该初始版本引入了函数,如 LEAST、GREATEST、LEFT、RIGHT、CEIL,以及对持续时间和时间段的算术操作。你可以比较和排序文本字段,并使用 TopN 根据多值块对行进行排序。

Elasticsearch 8.12

该版本重点提升 ES|QL 的速度和效率。新增 PROFILE 选项,用于显示每个查询步骤所耗时间,方便调试与优化。ES|QL 开始支持 GEO_POINT 和 CARTESIAN_POINT,可以在查询中使用空间数据。内部优化减少了内存使用,并更高效地加载多个字段。此外,现在可以直接访问 _source 字段,从而获取原始文档内容。

Elasticsearch 8.13

引入异步查询 API,支持在后台执行长时间运行的查询并稍后获取结果。新增函数 TO_UPPER、TO_LOWER、date_diff、MV_FIRST 和 MV_LAST,方便处理字符串和多值字段。=~ 运算符支持不区分大小写的比较。支持跨集群 enrich 查询,即可以基于远程索引对查询进行增强。STATS 命令现在支持聚合表达式。

Elasticsearch 8.14(正式发布)

ES|QL 现已正式发布。可以在 STATS 表达式中对值进行分组,并按表达式排序,而不仅限于常规字段。新增函数 LOCATE(查找子串)、SIGNUM(返回给定数字的符号),以及空间辅助函数 ST_CONTAINS、ST_DISJOINT 和 ST_WITHIN。正则表达式和 CASE 表达式得到了优化。enrich 管道支持文本字段,大型数组的序列化速度也更快。

Elasticsearch 8.15

现在你可以使用 :: 显式转换值类型,例如从字符串转为整数。新增 top_list 聚合类型,帮助汇总最常见的值,ip_prefix 函数获取 IP 地址的前缀。新增 Arrow 格式输出,实现与 pandas 或支持 Arrow 的引擎的数据互操作。同时,_ignored 元数据字段也被公开。

Elasticsearch 8.16

新增函数 EXP、HYPOT、SPACE 和 REVERSE。MIN、MAX 和 TOP 聚合支持更多数据类型,如字符串、IP 和布尔值。现在可以使用 MV_PERCENTILE 计算多值字段的百分位数,使用 MV_PSERIES_WEIGHTED_SUM 进行加权评分。性能分析和内存跟踪得到改进,帮助用户更好理解性能和资源使用。

Elasticsearch 8.17

ES|QL 在技术预览中开始支持 date_nanos,提高时间序列用例的精度。新增标量函数 BIT_LENGTH 和 BYTE_LENGTH,分别返回字符串的位数和字节数。skip_unavailable 现在在查询规划阶段生效,提升多集群环境下的容错能力。新函数指标(metrics)允许跟踪哪些 ES|QL 函数使用最多。。

8.18 和 9.0 同时发布,但更新日志仍然不同。

Elasticsearch 8.18

LOOKUP JOIN 进入技术预览,允许跨索引连接数据。例如,将日志与元数据或用户配置文件匹配。全文评分通过 _score 正式支持,MATCH 等函数改进了新选项和兼容性。CATEGORIZE 针对大型数据集进行了优化。ST_EXTENT_AGG 和 ST_ENVELOPE 启用空间汇总,如为地理数据查找边界框。date_nanos 支持扩展到所有相关日期函数。  

Elasticsearch 9.0 

LOOKUP JOIN 进入技术预览。KQL(技术预览)允许将 Kibana 风格的过滤器嵌入查询。  

全文匹配评分支持 disjunctions(例如,“this OR that”),_score 现在可在表达式中使用。高级遥测、计划验证和 TopN 下推中的部分排序字段都有助于更快、更智能的查询执行。  

技术增强包括更智能的字段上限解析、跨集群查询的遥测、CCS 的异步元数据以及对未映射字段的支持。STARTS_WITH、ENDS_WITH 和 TO_UPPER 等函数现已下推到 Lucene 以提高性能。  

要了解每个版本的详细信息,你可以查看我们为这篇文章整理的完整时间线,如果你想亲自试验 ES|QL,可以尝试 ES|QL 沙盒。

原文:Timeline of ES|QL improvements - Elasticsearch Labs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/914985.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/914985.shtml
英文地址,请注明出处:http://en.pswp.cn/news/914985.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux | Bash 子字符串提取

注:本文为 “ Bash 子字符串提取” 相关合辑。 英文引文,机翻未校。 如有内容异常,请看原文。 How to Extract Bash Substring? [5 methods] 如何提取 Bash 子字符串?[5 种方法] 2024-04-28 00:00:00 In Bash, a substring is…

Vue2 前端开发 - vue-quill-editor 富文本编辑器(编辑器基础案例、编辑器配置参数解读、编辑器事件)

一、vue-quill-editor 1、vue-quill-editor 概述vue-quill-editor 是一个基于 Quill 富文本编辑器的 Vue 组件vue-quill-editor 在 Vue 2 项目中可以很方便地集成与使用2、vue-quill-editor 安装 执行如下指令,安装 vue-quill-editor npm install vue-quill-editor …

断网情况下,网线直连 Windows 笔记本 和Ubuntu 服务器

在断网情况下,通过网线直连 Windows 笔记本 和 Ubuntu 服务器,并使用 VSCode 访问服务器及 Docker 容器 的步骤如下:1. 物理连接(网线直连) 1.1 使用网线连接 用 网线(Cat5e 或更高) 连接 Windo…

消息队列总结

为什么需要消息队列? 随着互联网快速发展,业务规模不断扩张,技术架构从单体演进到微服务,服务间调用复杂、流量激增。为了解耦服务、合理利用资源、缓冲流量高峰,「消息队列」应运而生,常用于异步处理、服务…

C#引用转换核心原理:类型视角切换

🔍 C#引用转换核心原理:类型视角切换 引用类型由内存指针和类型标记组成(如图1)。引用转换不改变内存地址,仅改变编译器识别对象的“视角”: B myVar1 new B(); // 实际B类型对象 A myVar2 (A)myV…

重要发布丨MaxKB V2正式发布,助力用户快速构建企业级智能体

2025年7月18日,MaxKB V2版本正式发布。MaxKB是一个强大易用的企业级智能体平台,致力于解决企业AI落地所面临的技术门槛高、部署成本高、迭代周期长等问题,让企业用户落地AI更简单。 秉承“开箱即用,伴随成长”的设计理念&#xff…

大语言模型任务分解与汇总:从认知瓶颈到系统化解决方案

一、缘起:为什么大模型需要"分而治之" 1.1 从一个真实场景说起 设想这样一个场景:你要求GPT-4帮你完成一份包含市场调研、竞品分析、财务预测和战略规划的商业计划书。即使是最先进的大模型,面对这样的复杂任务也会"力不从心&…

Spring核心注解@RequestMapping详解

RequestMapping 是 Spring Framework 中一个核心注解,用于在 Spring MVC(或 Spring WebFlux)中将 HTTP 请求映射到特定的处理器(Controller 中的方法)或处理器类。它告诉 Spring 框架:当一个匹配特定条件的…

OSPF路由协议的协商过程

OSPF的知识点非常多,协议过程也是一个不大不小的知识点,今天就简单的说一下,OSPF是如何进行协商的。OSPF(Open Shortest Path First)协议是一种用于路由选择的动态链路状态协议,是大型网络普遍使用的动态路…

MySql:索引,结构

文章目录注意事项结构注意事项 主键字段在建表时,会自动创建主键索引添加唯一约束时,数据库实际上会添加唯一索引。 解释: 增:创建: create [unique] index 索引名 on 表名 (字段名……);-- 举例 :给tb…

ts学习2

JavaScript 中的每个值都有一组行为,您可以通过运行不同的操作来观察这些行为。这听起来很抽象,但作为一个简单的例子,考虑我们可能在名为 message 的变量上运行的一些操作。 // Accessing the property toLowerCase // on message and then…

k8s环境使用Operator部署Seaweedfs集群(下)

作者:闫乾苓 文章目录4.4.3 部署seaweedfs集群4.4.4 验证集群运行状态4.4.5 测试集群功能4.4.3 部署seaweedfs集群 集群Yaml示例 apiVersion: seaweed.seaweedfs.com/v1 kind: Seaweed metadata:name: seaweed1namespace: default spec:image: chrislusf/seaweedf…

【橘子分布式】gRPC(理论篇)

一、简介 我们在前面学习了thrift rpc的知识,我们从其中接触到了IDL,编解码协议,服务的远程调用(调用远程服务就像在在本地调用一样)等各种概念。 其实我个人对thrift的使用并不多,我更多的是使用今天我们要提到的一个RPC框架称之…

OSPF高级特性之GR

一、概述OSPF GR(Graceful Restart),在路由器发生故障或管理员干预的情况下重启了OSPF进程时,重新构建控制平面时,转发平面不受影响,仍可以正常转发数据。在我们OSPF网络环境当中,假设路由器为框式路由器,通常框式路由器有多个主控板,当主主控板发生故障时会切换到备主控板上。…

iOS 构建配置与 AdHoc 打包说明

iOS 构建配置与 AdHoc 打包说明 1. 背景 在 iOS 项目中,通常需要支持 多个环境的构建和分发,比如: 开发环境 (Debug) → 本地调试内测环境 (AdHoc) → 提供 QA / 产品经理测试预发布环境 (AdHoc_Release) → 和正式版配置一致,但通…

【52】MFC入门到精通——MFC串口助手(二)---通信版(发送数据 、发送文件、数据转换、清空发送区、打开/关闭文件),附源码

文章目录1 完整 功能展示2 添加控件变量及声明2.1 添加控件及变量2.2 SerialPortDlg.h: 头文件3 函数实现3.1 数据发送3.1.2 写数据、字符串转3.2 发送文件3.2.1 打开文件3.2.2 发送文件3.3 清空发送区4 完整MFC项目项下载1 完整 功能展示 串口通信助手 页面展示,功…

笔试——Day12

文章目录第一题题目思路代码第二题题目:思路代码第三题题目:思路代码第一题 题目 删除公共字符 思路 模拟: 遇到需要删除的字符,则不添加到结果中 代码 第二题 题目: 两个链表的第一个公共结点 思路 模拟&#x…

SpringMVC @ResponseBody注解详解

概要ResponseBody是 Spring MVC 中的一个重要注解,用于指示方法的返回值应该直接作为 HTTP 响应体返回,而不是解析为视图名称。基本功能ResponseBody主要用于将Java对象转换为HTTP响应体(通常是JSON或XML)绕过视图解析器直接返回数…

剑指offer——模拟:顺时针打印矩阵

模拟vector.size返回的是矩阵的行数,vector[0].size返回的是矩阵的列数先排除传入的矩阵是空矩阵先计算上下左右的边界只要边界不重合,就不停止输出,完成一个部分的打印,就将当前的一个边界回收不可以在for循环结束的时候一起判断…

electron-vite实践成品项目

羊驼的工具箱 项目地址 推荐使用该版本 并且使用yarn进行安装 node版本:v22.16.0 技术栈:electron vue3 vite pinia vuetify3 sequelize sqlite Q:为什么vue3要用 vue2的写法 A:其实是因为刚开始用vue3的写法感觉超级恶心 对属性的赋值和方法的管理可观性…