ES|QL(Elasticsearch 查询语言)入门

2023-11-09 18:15

本文主要是介绍ES|QL(Elasticsearch 查询语言)入门,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:Ninoslav Miskovic

通过使用 ES|QL 直接从 Discover 创建聚合、可视化和警报,缩短获得见解的时间。

什么是 ES|QL(Elasticsearch 查询语言)?

ES|QL(Elasticsearch 查询语言)是 Elastic® 全新的创新管道查询语言,旨在通过提供强大的计算和聚合功能来加速数据分析和调查流程。

轻松高效地应对识别正在发生的网络攻击或查明生产问题的复杂性。

ES|QL 不仅简化了海量数据集的搜索、聚合和可视化,还为用户提供了查找(lookup)和实时处理等高级功能,所有这些都可以在 Discover 的单个屏幕上完成。

ES|QL 为 Elastic Stack 增加 3 项强大功能

  1. 一个新的、快速的分布式和专用查询引擎,为 _query 提供支持。 新的 ES|QL 查询引擎通过并发处理提供高级搜索功能,无论数据源和结构如何,都可以提高速度和效率。 新引擎的性能经过测量并公开。 请在公共仪表板中查看性能基准测试。
  2. 一种新的、强大的管道语言。 ES|QL 是 Elastic 的新型管道语言,可转换、丰富和简化数据调查。 在文档中了解有关 ES|QL 语言功能的更多信息。
  3. 一种全新的、统一的数据探索/调查体验,通过从一个屏幕创建聚合和可视化来加速解决问题,从而提供不间断的工作流程。

为什么我们要在 ES|QL 上投入时间和精力?

我们的用户需要敏捷的工具,这些工具不仅可以呈现数据,还可以提供有效的方法来理解数据,以及根据实时见解采取行动并进行数据摄取后处理的能力。

Elastic 致力于增强用户的数据探索体验,这促使我们投资 ES|QL。 它旨在为初学者提供方便,为专家提供强大功能。 借助 ES|QL 直观的界面,用户可以快速启动并深入研究数据,而无需艰难的学习曲线。 自动完成和应用程序内文档可确保制作高级查询成为一个简单的工作流程。

此外,ES|QL 不仅仅向你显示数字;它还向你显示数据。 它使它们栩栩如生。 由 Lens 建议引擎提供支持的上下文可视化会自动适应你的查询的性质,从而提供你的见解的清晰视图。

此外,直接集成到仪表板和警报功能反映了我们对有凝聚力的端到端体验的愿景。

从本质上讲,我们对 ES|QL 的投资是对社区不断变化的需求的直接响应 —— 朝着更加互联、富有洞察力和高效的工作流程迈出的一步。

深入研究安全性和可观察性用例

我们对 ES|QL 的承诺还源于对用户(例如站点可靠性工程师 (SRE)、DevOps 和威胁猎手)所面临的挑战的深刻理解。

对于 SREs 来说,可观察性至关重要。 每一秒的停机或故障都会对用户体验产生连锁反应,从而影响利润。 ES|QL 的警报功能就是一个例子:它强调突出孤立事件的有意义的趋势,SRE 可以主动查明并解决系统效率低下或故障的问题。 这可以减少噪音并确保他们对系统稳定性的真正威胁做出反应,从而使他们的响应更加及时和有效。

DevOps 团队始终与时间赛跑,部署多个更新、补丁和新功能。 借助 ES|QL 全新且强大的数据探索和数据可视化,他们可以快速评估每次部署的影响、监控系统运行状况并接收实时反馈。 这不仅提高了部署质量,还可以确保在需要时快速修正方向。

对于威胁猎手来说,安全形势在不断发展和变化。 ENRICH 功能是 ES|QL 如何在不断变化的环境中为他们提供支持的一个例子。 此功能使他们能够跨不同数据集查找数据,从而揭示可能表明安全威胁的隐藏模式或异常情况。 此外,上下文可视化意味着他们不仅可以看到原始数据,还能获得以视觉方式呈现的可操作的见解。 这大大减少了识别潜在威胁所需的时间,确保对漏洞做出更快的反应。

无论你是试图破译服务器负载峰值的 SRE、评估最新版本影响的 DevOps 专业人员,还是调查潜在漏洞的威胁猎人,ES|QL 都能为用户提供补充,而不是让整个过程变得复杂。

博客文章的下一部分将帮助你开始使用 ES|QL 并展示一些具体示例,说明它在探索数据时的强大功能。

如何在 Kibana 中开始使用 ES|QL

要开始使用 ES|QL,请导航到 Discover,然后只需从数据视图选择器中选择 Try ES|QL。 它用户友好且简单。

这将使你进入 Discover 中的 ES|QL 模式。

高效、简单的查询构建

Discover 中的 ES|QL 提供自动完成和应用内文档,让你可以轻松地直接从查询栏创建强大的查询。

查询栏中自动完成,帮助你快速完成查询

In-app 文档可帮助你学习 ES|QL!

如何使用 ES|QL 分析和可视化数据

借助 ES|QL,你可以进行全面而强大的数据探索。 它允许你直接从查询生成器在 Discover 中进行临时数据探索、创建聚合、转换数据、丰富数据集等。 结果以表格格式或可视化形式呈现 - 这取决于你正在执行的查询。

下面你将找到用于可观察性的 ES|QL 查询的示例,以及结果如何以表格格式和可视化表示形式表示。

带有指标用例的 ES|QL 查询:

from metrics* 
| stats max_cpu = max(kubernetes.pod.cpu.usage.node.pct), max_mem = max(kubernetes.pod.memory.usage.bytes) by kubernetes.pod.name 
| sort max_cpu desc 
| limit 10

上面的查询展示了如何使用以下源命令、聚合函数和处理命令:

from 源命令(文档)

from metrics*:这将从与模式 “metrics*” 匹配的索引模式发起查询。 星号 (*) 充当通配符,这意味着它将从名称以 “metrics” 开头的所有索引模式中选择数据。

stats…by...按聚合(文档)、max(文档)和 by(文档)

该部分根据特定统计数据聚合数据。 其分解如下:

  • max_cpu=max(kubernetes.pd.cpu.usage.node.pct):对于每个不同的 “kubernetes.pod.name”,它会查找最大 CPU 使用百分比并将该值存储在名为 “max_cpu” 的新列中。
  • max_mem = max(kubernettes.pod.memory.usage.bytes):对于每个不同的 “kubernetes.pod.name”,它会找到最大内存使用量(以字节为单位)并将该值存储在名为 “avg_mem” 的新列中。

sort (文档)

sort max_cpu desc:按 “max_cpu” 列降序对结果数据行进行排序。 这意味着 “max_cpu” 值最高的行将位于顶部。

limit(文档)

这将排序后的输出限制为前 10 行。

总之,查询:

  • 使用索引模式对所有指标索引的数据进行分组
  • 聚合数据以查找每个不同 Kubernetes Pod 的最大 CPU 使用率百分比和最大内存使用率
  • 按最大 CPU 使用率降序对聚合数据进行排序
  • 仅输出 CPU 使用率最高的前 10 行

上下文可视化:在 Discover 中编写 ES|QL 查询时,你将收到由 Lens 建议引擎提供支持的视觉表示。 你的查询的性质决定了你获得的可视化类型,无论是指标、直方图热图等。

下面是上述查询的条形图形式的直观表示和表格表示,其中包含 max_cpu、avg_mem 和 kubernetes.pod.name 列:

具有可观察性和时间序列数据用例的 ES|QL 查询示例:

from apache-logs |
where url.original == "/login" |
eval time_buckets = auto_bucket(@timestamp, 50, "2023-09-11T21:54:05.000Z", "2023-09-12T00:40:35.000Z") |
stats login_attempts = count(user.name) by time_buckets, user.name |
sort login_attempts desc

上面的查询展示了如何使用以下源命令、聚合函数、处理命令和函数。

from 源命令(文档)

来自 apache-logs:这将从名为 “apache-logs” 的索引发起查询。 该索引包含与 Apache Web 服务器流量相关的日志条目。

where (文档)

其中 url.original==”/login”:将记录过滤为仅包含 “url.original” 字段等于 “/login” 的记录。 这意味着我们只对与登录尝试或访问登录页面有关的日志条目感兴趣。

eval (文档) 及 auto_bucket (文档)

  • eval time_buckets =... :这将创建一个名为 “time_buckets” 的新列。
  • “auto_bucket” 函数创建人性化的存储桶,并为每行返回一个与该行所属的结果存储桶相对应的日期时间值。
  • “@timestamp” 是包含每个日志条目的时间戳的字段。
  • “50” 是桶的数量。
  • “2023-09-11T21:54:05.000Z”:分桶开始时间
  • “2023-09-12T00:40:35.000Z”:分桶结束时间

这意味着从 “2023-09-11T21:54:05.000Z” 到 “2023-09-12T00:40:35.000Z” 的日志条目将被分为 50 个等间隔的间隔,并且每个条目将与特定间隔相关联基于其时间戳。

目标不是提供准确的目标存储桶数量,而是选择一个你满意的范围,最多提供目标存储桶数量。 如果你要求更多的存储桶,那么 auto_bucket 可以选择较小的范围。

stats…by 聚合 (文档), count (文档), 及 by (文档) 

stats login_attempts = count(user.name) by time_buckets, user.name:聚合数据以计算登录尝试次数。 它通过计算 “user.name”(代表尝试登录的唯一用户)的出现次数来实现这一点。

计数按 “time_buckets”(我们创建的时间间隔)和 “user.name” 分组。 这意味着对于每个时间段,我们将看到每个用户尝试登录的次数。

sort (文档) 

sort login_attempts desc:最后,聚合结果按 “login_attempts” 列降序排序。 这意味着结果将在顶部显示最多的登录尝试次数。

总之,查询:

  • 从 “apache-logs” 索引中选择数据
  • 过滤与登录页面相关的日志条目
  • 将这些条目存储到特定的时间间隔中
  • 计算每个时间间隔内每个用户的登录尝试次数
  • 首先输出按登录尝试次数最高排序的结果

下面是上述查询的条形图形式的直观表示和表格表示,其中包含登录尝试、时间桶和用户名列。

Discover 及 Dashboard 中的内嵌可视化编辑

直接在 Discover 和仪表板中编辑 ES|QL 可视化。 无需导航到 Lens 即可进行快速编辑; 你可以无缝地进行更改。

你可以在下面观看端到端工作流程的视频或阅读分步指南:

  1. 编写 ES|QL 查询
  2. 根据查询的性质获取上下文可视化
  3. 内联编辑可视化
  4. 将其保存到仪表板
  5. 能够从仪表板编辑可视化

ES

步骤 1. 编写 ES|QL 查询。 生成指标可视化的查询示例:

from apache-logs
| stats avgbytes = avg(http.response.body.bytes)
| eval roundbytes = round(avgbytes)
| drop avgbytes

步骤 2. 根据查询的性质获取上下文可视化(在本例中为指标可视化)

然后,你可以选择铅笔图标进入内联编辑模式。

步骤 3. 使用内联编辑模式编辑可视化

在上述情况下,我们希望可视化处于动态(dynamic)颜色模式,因此我们将其切换为 “Dynamic”。

我们还有机会定义我们想要使用的颜色范围:

步骤 4. 保存到仪表板

步骤 5. 能够从仪表板编辑可视化

直接从 Discover 创建 ES|QL 警报

你可以使用 ES|QL 进行可观察性和安全警报,将聚合值设置为阈值。 通过强调有意义的趋势而非孤立事件,减少误报,提高检测准确性并接收可操作的通知。

下面,我们将重点介绍如何从 Discover 创建 ES|QL 警报规则类型。

新的警报规则类型可在现有 Elasticsearch 规则类型下使用。 此规则类型带来了 ES|QL 中可用的所有新功能,并解锁了新的警报用例。

使用新类型,用户将能够根据定义的 ES|QL 查询生成单个警报,并在保存规则之前预览查询结果。 当查询返回空结果时,不会生成警报。

警报的查询示例:

from metrics-pods |
stats max_cpu = max(kubernetes.pod.cpu.usage.node.pct) by kubernetes.pod.name|
sort max_cpu desc | limit 10

如何从 Discover 创建警报

步骤 1. 单击 “Alerta”,然后单击 “Create search threshold rule

你可以在查询栏中定义 ES|QL 查询之后或定义 ES|QL 查询之前开始创建 ES|QL 警报规则类型。 定义后执行此操作的好处是查询会自动粘贴到 “Create Alert” 弹出窗口中。

步骤 2. 开始定义 ES|QL 警报规则类型

步骤 3. 测试你的警报规则类型查询

你可以迭代粘贴的 ES|QL 查询,并通过单击 “Test query” 对其进行测试。 这将为你提供表格中结果的预览。

第 4 步:设置连接器并“保存”。

你现在已成功创建 ES|QL 警报规则类型!

使用另一个数据集中的字段丰富你的查询数据集

你可以使用 enrich 命令(文档)使用另一个数据集中的字段来增强查询数据集,并为所选策略提供上下文建议(即提示匹配字段和丰富列)。

使用 ENRICH 的查询示例,其中通过查询使用丰富策略:“servers-to-project” 来通过 name、server_hostname 和 cost 来丰富数据集:

from projects* | limit 10 |
enrich servers-to-project on project_id with name, server_hostname, cost |
stats num_of_servers = count(server_hostname), total_cost = sum(cost) by project_id |
sort total_cost desc
上面的 ENRICH 查询的表格结果和可视化表示

我们还通过添加概述和创建丰富策略的向导,使用户可以轻松创建丰富策略。

要查找丰富策略的概述,请导航到 Stack ManagementIndex Management,你将在其中看到一个名为 Enrich Policies 的选项卡:

以下是上述查询中使用的丰富策略:“servers-to-project”:

你可以通过单击 “Create enrich policy” 轻松开始创建新的丰富策略。 一旦你创建并执行了一个,就可以在 Discover 中的 ES|QL 查询中使用它。

在此处了解有关丰富策略的更多信息,以及在此处了解有关 ES|QL 中的 ENRICH 命令的更多信息。

提升数据探索:ES|QL 的力量和前景

ES|QL 是 Elastic 推进数据分析和探索的最新创新。 这不仅仅是展示数据; 它是为了使其易于理解、可操作且具有视觉吸引力。 ES|QL 由快速、分布式和专用查询引擎提供支持,设计为一种新的管道语言,并包含统一的数据探索体验,可以满足站点可靠性工程师(site reliability engineer - SRE)、DevOps、威胁猎人和其他类型的分析师的挑战。。

ES|QL 使 SRE 能够有效解决系统效率低下的问题,帮助 DevOps 确保高质量部署,并为威胁搜寻者提供快速识别潜在安全威胁的工具。 它直接集成到仪表板、内嵌可视化编辑、警报功能以及丰富命令等功能,提供了无缝且高效的工作流程。 ES|QL 界面结合了强大功能和用户友好性,允许用户深入研究数据,使他们的分析更简单、更有洞察力。 ES|QL 的推出只是 Elastic 围绕增强数据探索体验和满足用户社区不断变化的需求而努力的延续。

你今天就可以尝试 ES|QL 的所有功能! 为此,请注册 Elastic 试用帐户或在我们的公共演示环境中进行测试。

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

原文:Getting started with ES|QL (Elasticsearch Query Language) | Elastic Blog

这篇关于ES|QL(Elasticsearch 查询语言)入门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/377772

相关文章

C++必修:模版的入门到实践

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C++学习 贝蒂的主页:Betty’s blog 1. 泛型编程 首先让我们来思考一个问题,如何实现一个交换函数? void swap(int& x, int& y){int tmp = x;x = y;y = tmp;} 相信大家很快就能写出上面这段代码,但是如果要求这个交换函数支持字符型

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据6.FALSH编程时间,擦写次数7.I/O高低电平电压表格8.外设接口

ps基础入门

1.基础      1.1新建文件      1.2创建指定形状      1.4移动工具          1.41移动画布中的任意元素          1.42移动画布          1.43修改画布大小          1.44修改图像大小      1.5框选工具      1.6矩形工具      1.7图层          1.71图层颜色修改          1

C++入门01

1、.h和.cpp 源文件 (.cpp)源文件是C++程序的实际实现代码文件,其中包含了具体的函数和类的定义、实现以及其他相关的代码。主要特点如下:实现代码: 源文件中包含了函数、类的具体实现代码,用于实现程序的功能。编译单元: 源文件通常是一个编译单元,即单独编译的基本单位。每个源文件都会经过编译器的处理,生成对应的目标文件。包含头文件: 源文件可以通过#include指令引入头文件,以使

LVGL快速入门笔记

目录 一、基础知识 1. 基础对象(lv_obj) 2. 基础对象的大小(size) 3. 基础对象的位置(position) 3.1 直接设置方式 3.2 参照父对象对齐 3.3 获取位置 4. 基础对象的盒子模型(border-box) 5. 基础对象的样式(styles) 5.1 样式的状态和部分 5.1.1 对象可以处于以下状态States的组合: 5.1.2 对象

C语言入门系列:探秘二级指针与多级指针的奇妙世界

文章目录 一,指针的回忆杀1,指针的概念2,指针的声明和赋值3,指针的使用3.1 直接给指针变量赋值3.2 通过*运算符读写指针指向的内存3.2.1 读3.2.2 写 二,二级指针详解1,定义2,示例说明3,二级指针与一级指针、普通变量的关系3.1,与一级指针的关系3.2,与普通变量的关系,示例说明 4,二级指针的常见用途5,二级指针扩展到多级指针 小结 C语言的学习之旅中,二级

打造坚固的SSH防护网:端口敲门入门指南

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 打造坚固的SSH防护网:端口敲门入门指南 前言什么是端口敲门端口敲门的优点1. 增强安全性2. 动态防火墙规则3. 隐匿服务4. 改善日志管理5. 灵活性和兼容性6. 低资源消耗7. 防御暴力破解和扫描8. 便于合法用户访问9. 适用于不同类型的服务 端口敲

好书推荐《深度学习入门 基于Python的理论与实现》

如果你对Python有一定的了解,想对深度学习的基本概念和工作原理有一个透彻的理解,想利用Python编写出简单的深度学习程序,那么这本书绝对是最佳的入门教程,理由如下:     (1)撰写者是一名日本普通的AI工作者,主要记录了他在深度学习中的笔记,这本书站在学习者的角度考虑,秉承“解剖”深度学习的底层技术,不使用任何现有的深度学习框架、尽可能仅使用基本的数学知识和Python库。从零创建一个

手把手教你入门vue+springboot开发(五)--docker部署

文章目录 前言一、前端打包二、后端打包三、docker运行总结 前言 前面我们重点介绍了vue+springboot前后端分离开发的过程,本篇我们结合docker容器来研究一下打包部署过程。 一、前端打包 在VSCode的命令行中输入npm run build可以打包前端代码,出现下图提示表示打包完成。 打包成功后会在前端工程目录生成dist目录,如下图所示: 把

CALayer入门

iOS开发UI篇—CALayer简介 一、简单介绍 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可