当前位置: 首页 > news >正文

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

作者:Costin Leau

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

为什么要另一种语言?

Elasticsearch 支持多种语言,从古老的 queryDSL 到 EQL、KQL、SQL、Painless、Canvas/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

http://www.lryc.cn/news/118665.html

相关文章:

  • 机器学习 day32(神经网络如何解决高方差和高偏差)
  • Web前端之NodeJS、Vue
  • 冠达管理:银行定增是利好还是利空?
  • 背上小书包准备run之TypeScript篇
  • 什么是绩效管理?绩效管理包括哪些内容?
  • Java基础练习八(二维数组)
  • Biopython序列比对
  • 无法坚持运动?解密肠道菌群影响运动积极性
  • 4-5-tablewidget
  • 前端基础第一天-html-综合案例
  • PDF Expert 3.3 for mac
  • 【腾讯云 Cloud Studio 实战训练营】深度体验 | 使用腾讯云 Cloud Studio 快速构建 Vue + Vite 完成律师 H5 页面
  • Word转PDF在线转换如何操作?分享转换技巧
  • 只需5步 真·双开电脑版微信
  • 如何将JSON字符串转化成对象
  • 计算机网络 运输层 UDP和TCP对比
  • Zebec Protocol 将进军尼泊尔市场,通过 Zebec Card 推动该地区金融平等
  • stm32项目(8)——基于stm32的智能家居设计
  • 边缘计算:连接智能世界的变革之力
  • 多货币多汇率跨境电子商城建设(仓储管理、网络安全)
  • 笔记,ubuntu22安装header问题
  • 领航优配:股票分红为什么股价下降?分红有什么好处?
  • Spark(38):Streaming DataFrame 和 Streaming DataSet 转换
  • 设计模式之六:命令模式(封装调用)
  • git删除历史提交中的某些文件
  • Java List(列表)
  • 虚拟机的创建与使用
  • springboot传给前端日期少了八小时
  • 链表数组OJ题汇总
  • 中间人攻击与 RADIUS 身份验证