推出 Elasticsearch 查询语言 (ES|QL)

作者:Costin Leau

我很高兴地宣布,经过大约一年的开发,Elasticsearch 查询语言 (ES|QL) 已准备好与世界共享,并已登陆 Elasticsearch 存储库。 ES|QL 是 Elasticsearch® 原生的强大声明性语言,专为可组合性、表现力和速度而设计。

为什么要另一种语言?

Elasticsearch 支持多种语言,从古老的 queryDSLEQLKQLSQLPainlessCanvas/Timelion 等,随着其采用率的增加,受众及其需求也在增加。 它不再只是 "全文搜索"。 它涉及很多事情,例如日志探索、威胁搜寻、报告、警报和自定义处理。

作为我们自己产品的消费者,我们想要一种与 Elasticsearch 交互的单一、整合的方式,这种方式可以使全面的计算功能接近数据,并且无需昂贵地传输到外部系统进行自定义处理。

以下是使用 MySQL 演示 employees 数据集(进行了大量修改)从测试套件中获取的 ES|QL 查询:

复制代码
  FROM employees
| EVAL hired_year = TO_INTEGER(DATE_FORMAT(hire_date, "YYYY"))
| WHERE hired_year > 1984
| STATS avg_salary = AVG(salary) BY languages
| EVAL avg_salary = ROUND(avg_salary)
| EVAL lang_code = TO_STRING(languages)
| ENRICH languages_policy ON lang_code WITH lang = language_name
| WHERE NOT IS_NULL(lang)
| KEEP avg_salary, lang
| SORT avg_salary ASC
| LIMIT 3

返回类似于以下内容的响应:

复制代码
{
  "columns": [
    {"name": "avg_salary", "type": "double"},
    {"name": "lang",       "type": "keyword"}
  ],
  "rows": [
    ["43760.0", "Spanish"],
    ["48644.0", "French"],
    ["48832.0", "German"]
  ]
}

单个 ES|QL 查询执行过滤、处理、分组、重命名、排序、查找和列修剪。

查询从上到下流动,就像数据一样。 人们可以根据需要链接任意数量的命令,对它们重新排序,并使用内置函数或其自身的评估。 ES|QL 提供了统一的查询体验,比现有的查询界面更简单、更强大,并且将继续可用。

专用查询引擎

ES|QL 不仅仅是一种语言,还是 Elasticsearch 的成熟、专业的查询和计算引擎。 没有对 QueryDSL 的翻译或转译:所有 ES|QL 查询都经过词法分析和解析、解析和语义分析、验证和优化,然后是针对集群中的数据进行分布式执行的规划阶​​段。 指定的目标节点负责本地执行,并通过使用 ES|QL 基础设施执行自己的本地重新规划来利用本地数据特征。

ES|QL 带来了一种在设计时考虑到性能的新执行引擎,该引擎一次对块而不是对每行进行操作,以矢量化和缓存局部性为目标,并支持专业化和多线程。 它是一个独立于现有 Elasticsearch 聚合框架的组件,具有不同的性能特征。 在我们当前的基准测试中,几个聚合有了显着的改进(下图中的值越小越好)。

目标是提供不同的功能,例如执行多个链式分组:

复制代码
POST /_query?format=txt
{
 "query" : """
  FROM employees
| STATS c = COUNT(emp_no) BY languages
| STATS most_speakers_of_a_lang = MAX(c)
 """
}

上面查询显示的结果为:

复制代码
most_speakers_of_a_lang
-----------------------
21

请留意未来的博文,我们将探讨 ES|QL 的功能、设计决策和架构。

我在哪里可以得到它?

ES|QL 代码目前在功能分支上可用,并将作为 Elasticsearch 中的技术预览版发布。 这是一项免费功能,可供所有人使用。 每天快照很快就会可供下载,因此请随时查看代码并自行构建。 尝试一下 ES|QL 并开始探索本地数据 - 请阅读此处的文档

因为我们正处于 ES|QL 的早期阶段,可能存在一些未解决的问题、障碍,甚至是错误,请提出问题。 我们迫不及待地想与 Elasticsearch 社区分享 ES|QL!

我们代表 ES|QL 团队期待您的反馈!

本文中描述的任何特性或功能的发布和时间安排均由 Elastic 自行决定。 当前不可用的任何特性或功能可能无法按时交付或根本无法交付。

原文:https://www.elastic.co/blog/elasticsearch-query-language-esql

相关推荐
金融小师妹7 分钟前
AI供需模型解析:OPEC产量断崖式下滑与全球能源定价重构机制
大数据·深度学习·svn·逻辑回归·能源
AIHR数智引擎12 分钟前
AI时代,德鲁克依然是答案——只是问题变了
大数据·人工智能·学习·职场和发展·机器人·求职招聘
财迅通Ai9 小时前
商业航天概念领涨A股,航天ETF华安(159267.SZ)收盘上涨1.2%
大数据·人工智能·区块链·中国卫星·航天电子
迷茫的启明星9 小时前
各职业在当前发展阶段,使用AI的舒适区与盲区
大数据·人工智能·职场和发展
Henb92911 小时前
# 端到端延迟优化实战:从分钟级到秒级的全链路优化
大数据·数据查询优化
璞华Purvar12 小时前
涂料行业数智化升级破局:璞华易研 PLM 以 AI 赋能研发全链路
大数据·人工智能
却话巴山夜雨时i16 小时前
互联网大厂Java面试实录:技术栈解析与场景剖析
java·大数据·spring boot·spring cloud·微服务·ai·面试
渣渣盟16 小时前
Flink流处理:温度跳变检测与状态管理
大数据·flink·scala
AI先驱体验官16 小时前
债小白分析:债务优化服务的新变量、AI能否带来行业升级
大数据·人工智能·深度学习·重构·aigc