干货 | Elasticsearch 8.11 ES|QL 初体验

这里没有理论,只有验证后的结论和体验。

前提:这是 8.11 版本的新功能,必须提前安装最新 8.11 版本。

6395542bf1af362796ca7ad13e91d47e.png

1、对比参考实现

1.1 DSL 原始语法

POST kibana_sample_data_ecommerce/_search

1.2 ES|QL 检索语法, 类似SQL实现

POST /_query?format=txt
{
  "query": """
FROM kibana_sample_data_ecommerce
  """
}

输出如下:

759944d6b874b494e251ecadebac61bc.png

1.1 和 1.2 等价。

1.3 DSL 常规检索+排序

POST kibana_sample_data_ecommerce/_search
{
  "size": 3,
  "query": {
    "range": {
      "products.price": {
        "gte": 50
      }
    }
  },
  "sort": [
    {
      "products.created_on": {
        "order": "desc"
      }
    }
  ]
}

1.4 ES|QL 使用排序 + limit 限制输出

POST /_query?format=json
{
  "query": """
FROM kibana_sample_data_ecommerce
| WHERE products.price > 50
| LIMIT 3
| SORT products.created_on DESC
  """
}
d808fb45e2a51a386cf6384e0d7f1f2f.png

1.3 和 1.4 等价。

1.5 DSL 使用 wildcard 模糊匹配

POST kibana_sample_data_ecommerce/_search
{
  "size":30,
  "query": {
    "wildcard": {
      "products.product_name.keyword": {
        "value": "Basic*"
      }
    }
  },
  "sort": [
    {
      "products.created_on": {
        "order": "desc"
      }
    }
  ]
}

1.6 ES|QL使用的 like 模糊匹配

POST /_query?format=json
{
  "query": """
FROM kibana_sample_data_ecommerce
| WHERE   products.product_name LIKE "Basic*" 
| LIMIT 30
| SORT products.created_on DESC
  """
}

1.5 同 1.6 等价。

bd90f2306e2ade65f18c56a864e6967d.png

1.7 DSL 聚合操作

GET kibana_sample_data_ecommerce/_search
{
  "size": 0,
  "aggs": {
    "data_histogram": {
      "date_histogram": {
        "field": "order_date",
        "fixed_interval": "1d"
      }
    }
  }
}

1.8 ES|QL 聚合操作

POST /_query?format=json
{
  "query": """
FROM kibana_sample_data_ecommerce
| KEEP order_date
| EVAL bucket = AUTO_BUCKET (order_date, 31, "2023-10-01T00:00:00Z", "2023-10-31T23:59:59Z")
| STATS COUNT(*) BY bucket
  """
}
db4c02bb44018ec4d58facc6055a5928.png

1.7 和 1.8 等价。

2、ES|QL REST API 使用注意

2.1 限制字段输出

POST /_query?format=txt
{
  "query": "FROM kibana_sample_data_ecommerce | KEEP  order_date, currency,customer_first_name, customer_full_name | SORT order_date DESC | LIMIT 5"
}

输出结果如下:

c2e09719ef0c6f5009d482ed89b6cf4b.png

换做如下的语法格式也可以!

POST /_query?format=txt
{
  "query": """
  FROM kibana_sample_data_ecommerce 
  | KEEP  order_date, currency,customer_first_name, customer_full_name 
  | SORT order_date DESC 
  | LIMIT 5
  """
}
125486d97cbad79b4e6184bfc3363602.png

3、ES|QL 在 Kibana 上也可以使用

eeae685e361999b9525e49ba2f39efd2.png

4、 ES|QL 究竟为何物?

74cbf676c6d698229deb1128c1a432b1.jpeg

Elasticsearch 查询语言(ES|QL)是一种强大的工具,用于在 Elasticsearch 中过滤、转换和分析数据。它易于学习和使用,适用于各种用户,包括终端用户、SRE 团队、应用程序开发人员和管理员。

ES|QL 支持广泛的命令和功能,用于执行各种数据操作,如过滤、聚合和时间序列分析。ES|QL 使用“管道”(|)按顺序操作数据,使复杂数据转换和分析成为可能。

此外,ES|QL 不仅是一种语言,还代表 Elasticsearch 新计算能力的重大投资。

为了满足 ES|QL 的功能和性能要求,必须构建全新的计算架构。ES|QL 的搜索、聚合和转换功能直接在 Elasticsearch 内部执行,而不是转换为 Query DSL 执行。这种设计使 ES|QL 性能高效且多功能。

ES|QL 执行引擎针对性能优化,采用分块而非逐行操作,专注于向量化、缓存局部性、专业化和多线程处理,与现有的 Elasticsearch 聚合框架具有不同的性能特征。

其实在这之前咱们一直使用 DSL,认证专家考试也只考 DSL,在往后 Elasticsearch 推出了 类似 SQL 的 Elastic SQL,但是不能完全适配所有应用场景。其实企业里用的少。最后才有了现在的 ES | QL。

个人理解有点一语双关的意思。

  • 一方面:ESQL == Elasticsearch SQL。

  • 另一方面:ESQL = ES + QL, ES = Elasticsearch, QL 等于 SQL。

  • 再有, | 代表过滤的意思,也类似 linux 命令行。

5、参考

  • 1、https://www.elastic.co/guide/en/elasticsearch/reference/current/esql-language.html

  • 2、https://www.elastic.co/guide/en/elasticsearch/reference/current/esql-rest.html

推荐阅读

  • 全网首发!从 0 到 1 Elasticsearch 8.X 通关视频

  • 重磅 | 死磕 Elasticsearch 8.X 方法论认知清单

  • 如何系统的学习 Elasticsearch ?

  • 那些 ChatGPT4 也搞不定的 Elasticsearch 问题,请抛给我们!

808bd6b33a317a6589b5c9159f690ebd.jpeg

更短时间更快习得更多干货!

中国50%+Elastic认证专家出自于此!

2e4be2a2be2086501757b33ab7697247.gif

比同事抢先一步学习进阶干货!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/146886.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023亚太杯数学建模思路 - 复盘:人力资源安排的最优化模型

文章目录 0 赛题思路1 描述2 问题概括3 建模过程3.1 边界说明3.2 符号约定3.3 分析3.4 模型建立3.5 模型求解 4 模型评价与推广5 实现代码 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 描述 …

机器学习—基本术语

目录 1.样本(示例) 2.属性 3.属性值 4.属性空间 5.样本空间 6.学习(训练) 7.数据集 8.测试 9.假设 10.学习器 11.标记 12.样例 13.标记空间(样例空间) 14.分类与回归 15.有监督学习、无监督…

GZ038 物联网应用开发赛题第5套

2023年全国职业院校技能大赛 高职组 物联网应用开发 任 务 书 (第5套卷) 工位号:______________ 第一部分 竞赛须知 一、竞赛要求 1、正确使用工具,操作安全规范; 2、竞赛过程中如有异议,可向现场考评…

城市内涝对策,万宾科技内涝积水监测仪使用效果

随着城市化进程的加速,城市道路积水问题明显越来越多,给人们的出行和生活带来更多的不便。内涝积水监测仪作为高科技产品能够实时监测道路积水情况,为城市排水系统的管理和维护提供重要的帮助。 在城市生命线的基础设施规划之中,地…

Spring Cloud

1. 服务拆分和远程调用 任何分布式架构都离不开服务的拆分,微服务也一样。服务拆分:一个单体架构按照功能模块进行拆分,变成多个服务。 微服务需要根据业务模块拆分,做到单一职责,不要重复开发相同业务。 1.1 服务…

【论文阅读】(CGAN)Conditional Generative Adversarial Nets

论文地址:[1411.1784] Conditional Generative Adversarial Nets (arxiv.org) - 条件生成式对抗网络; 解读: 这篇论文中的Conditional GAN和原生GAN在结构上没有太大差别,时间也是紧随着原生GAN出来的,它的思想应该后…

理解Vue源码,从0开始撸了一个简版Vue

vue 的双向绑定、虚拟dom、diff算法等等面试常见问题你可能在几年前就学过了,其中有些人可能看过Vue的源码,了解过Vue是如何实现数据监听和数据绑定这些技术的。不过让从零开始实现一个 vue,你可以吗? 模板语法其实早就存在,在V…

03-学成在线内容管理模块之课程查询

课程查询 需求分析 教学机构人员点击课程管理按钮进入课程查询界面,在课程列表页面输入查询条件查询课程的信息 当不输入查询条件时默认会全部课程信息,输入查询条件会查询符合条件的课程信息,约束条件是本教学机构查询本机构的课程信息 数据模型(model工程) 课程查询功能…

MAT工具定位分析Java堆内存泄漏问题方法

原创/朱季谦 一、MAT概述与安装 MAT,全称Memory Analysis Tools,是一款分析Java堆内存的工具,可以快速定位到堆内泄漏问题。该工具提供了两种使用方式,一种是插件版,可以安装到Eclipse使用,另一种是独立版…

论文浅尝 | 用于开放式文本生成的事实增强语言模型

笔记整理:李煜,东南大学硕士,研究方向为知识图谱 链接:https://proceedings.neurips.cc/paper_files/paper/2022/hash/df438caa36714f69277daa92d608dd63-Abstract-Conference.html 1. 动机 生成式语言模型(例如 GPT-3…

【图论】最小生成树(python和cpp)

文章目录 一、声明二、简介三、代码C代码Python代码 一、声明 本帖持续更新中如有纰漏望指正! 二、简介 (a)点云建立的k近邻图(b)k近邻图上建立的最小生成树 最小生成树 (Minimum Spanning Tree,简称 M…

使用Tauri开发桌面应用

本文是对视频 Tauri入门教程[1]的学习与记录 Tauri官网[2] 对 node版本有要求 创建项目及目录介绍: 项目的目录结构如下 可以安装推荐的插件 执行npm run tauri build出错,根据 https://github.com/tauri-apps/tauri/issues/7430 执行 yarn add -D tauri-apps/cli && y…

缺陷预测(一)——论文复现

运行CGCN文件 问题一:CNN输入维度的问题出现的问题解决问题原因 问题二:mix时,输入的train_in和train_gen.inputs数据格式不一致出现的问题解决问题 最终结果 问题一:CNN输入维度的问题 出现的问题 数据集改好之后,出…

Python Flask: 构建轻量级、灵活的Web应用

大家好,我是涛哥,今天为大家分享 Python Web开发框架 Flask,文章3400字,阅读大约15分钟,大家enjoy~~ Flask是一个流行的Python Web框架,以其轻量级、灵活和易学的特性受到开发者的喜爱。本文将深入探讨Flas…

微服务简单理解与快速搭建

分布式和微服务 含义 微服务架构 微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服…

C语言进阶之指针(2)

✨ 猪巴戒:个人主页✨ 所属专栏:《C语言进阶》 🎈跟着猪巴戒,一起学习C语言🎈 目录 前情回顾 1.数组参数,指针参数 1.1一维数组传参 1.2二维数组传参 1.3一级指针传参 1.4二级指针传参 思考&#xf…

算法萌新闯力扣:同构字符串

力扣题:同构字符串 开篇 对于字符串相关的题目,哈希表经常会使用到,这道题更是如此,还用到了两个哈希表。拿下它,你对字符串题目的理解就会更上一层楼。 题目链接:205.同构字符串 题目描述 代码思路 看完题目后&a…

Django实战项目-学习任务系统-任务完成率统计

接着上期代码内容,继续完善优化系统功能。 本次增加任务完成率统计功能,为更好的了解哪些任务完成率高,哪些任务完成率低。 该功能完成后,学习任务系统1.0版本就基本完成了。 1,编辑urls配置文件: ./mysi…

原论文一比一复现 | 更换 RT-DETR 主干网络为 【ResNet-50】【ResNet-101】【ResNet-152】| 对比实验必备

本专栏内容均为博主独家全网首发,未经授权,任何形式的复制、转载、洗稿或传播行为均属违法侵权行为,一经发现将采取法律手段维护合法权益。我们对所有未经授权传播行为保留追究责任的权利。请尊重原创,支持创作者的努力,共同维护网络知识产权。 更深层的神经网络更难训练。…

香港科技大学广州|机器人与自主系统学域博士招生宣讲会—电子科技大学专场!!!(暨全额奖学金政策)

在机器人和自主系统领域实现全球卓越—机器人与自主系统学域 硬核科研实验室,浓厚创新产学研氛围! 教授亲临现场,面对面答疑解惑助攻申请! 一经录取,享全额奖学金1.5万/月! 🕙时间:…