正在加载

在 Kibana 中使用 ES|QL

Elastic Stack Serverless

您可以在 Kibana 中使用 ES|QL 来查询和聚合数据、创建可视化效果以及设置警报。

更具体地说,ES|QL 是 Kibana 中一个强大的工具,可以帮助您解决特定的解决方案用例。例如

  • 可观测性:ES|QL 使从单个查询中分析指标、日志和跟踪变得更加容易。通过动态定义字段、使用查找丰富数据以及使用同步查询处理,快速找到性能问题。将 ES|QL 与机器学习和 AiOps 结合使用可以提高检测准确性并使用聚合值阈值。
  • 安全性:使用 ES|QL 通过使用查找来检索用于调查的重要信息。动态丰富数据并创建新字段,以获得有价值的见解,从而更快地做出决策和采取行动。例如,对 IP 地址执行查找以识别其地理位置、其与已知恶意实体的关联,或者它是否属于已知的云服务提供商,所有这些都来自一个搜索栏。ES|QL 通过在检测规则中包含聚合值来确保更准确的警报。

本指南向您展示如何在 Kibana 中使用 ES|QL。 要按照查询进行操作,请通过从 Kibana 的 Integrations 页面中选择 Sample Data,选择 Other sample data sets,然后单击 Sample web logs 卡上的 Add data 来加载“Sample web logs”示例数据集。

默认情况下,ES|QL 在 Kibana 中处于启用状态。可以使用 高级设置 中的 enableESQL 设置禁用它。

这将从各种应用程序中隐藏 ES|QL 用户界面。但是,用户将能够访问现有的 ES|QL 项目,如已保存的搜索和可视化效果。

要开始使用 ES|QL,请转到 Discover。 接下来,从应用程序菜单栏中选择 Try ES|QL

切换到 ES|QL 模式后,查询栏会显示您先前转换为 ES|QL 的 KQL 或 Lucene 查询。如果查询为空,它会显示一个示例查询。例如

from kibana_sample_data_logs | limit 10

每个查询都以一个 源命令 开头。在此查询中,源命令是 FROMFROM 从数据流、索引或别名检索数据。在本例中,数据是从 kibana_sample_data_logs 检索的。

源命令后可以跟一个或多个 处理命令。在此查询中,处理命令是 LIMITLIMIT 限制检索的行数。

提示

单击 ES|QL help 按钮以打开产品内置的参考文档,了解所有命令和函数,或获取推荐的查询,以帮助您入门。

为了更轻松地编写查询,自动完成功能提供了可能的命令和函数建议

esql kibana auto complete
注意

ES|QL 关键字不区分大小写。以下查询与上一个查询相同

FROM kibana_sample_data_logs | LIMIT 10

为了便于阅读,您可以将每个处理命令放在新行上。以下查询与上一个查询相同

FROM kibana_sample_data_logs
| LIMIT 10

您可以使用查询编辑器的页脚中的 Add line breaks on pipes 按钮来执行此操作。

Automatic line breaks for ES|QL queries

您可以根据需要通过拖动其底边来调整编辑器的高度。

查询可能会导致警告,例如在查询不支持的字段类型时。发生这种情况时,警告符号会显示在查询栏中。要查看详细的警告,请展开查询栏,然后单击 warnings

您可以在查询栏中重复使用最近的 ES|QL 查询。在查询栏中,单击 Show recent queries

然后,您可以滚动浏览最近的查询

esql discover query history

ES|QL 具有应用内帮助和建议功能,因此您可以更快地入门,而不必离开应用程序来检查语法。

The ES|QL syntax reference and the autocomplete menu

从查询历史记录中,您可以将一些查询标记为收藏,以便以后更快地查找和访问它们。

在查询栏中,单击 Show recent queries

Recent 选项卡中,您可以为所需的任何查询加星标。

Starred 选项卡中,找到您之前加星标的所有查询。

esql discover query starred

对于示例查询,结果表显示 10 行。省略 LIMIT 命令时,结果表默认最多显示 1000 行。使用 LIMIT,您可以将限制增加到最多 10,000 行。

注意

10,000 行的限制仅适用于查询检索并显示在 Discover 中的行数。任何查询或聚合都在完整数据集上运行。

对于示例查询,每一行显示两列:一列包含 @timestamp 字段,另一列包含完整的文档。要显示文档中的特定字段,请使用 KEEP 命令

FROM kibana_sample_data_logs
| KEEP @timestamp, bytes, geo.dest

要将所有字段显示为单独的列,请使用 KEEP *

FROM kibana_sample_data_logs
| KEEP *
注意

Discover 中的最大列数为 50。如果查询返回超过 50 列,Discover 仅显示前 50 列。

要按其中一列排序,请单击要排序的列名并选择排序顺序。请注意,这会执行客户端排序。它仅对查询检索到的行进行排序,由于(隐式)限制,这些行可能不是完整的数据集。要对完整数据集进行排序,请使用 SORT 命令

FROM kibana_sample_data_logs
| KEEP @timestamp, bytes, geo.dest
| SORT bytes DESC

要在指定的时间范围内显示数据,您可以使用标准时间过滤器、自定义时间参数或 WHERE 命令。

当您查询的索引具有名为 @timestamp 的字段时,标准 时间过滤器 处于启用状态。

如果您的索引没有名为 @timestamp 的字段,您可以使用 ?_tstart?_tend 参数来指定时间范围。这些参数适用于任何时间戳字段,并自动与 时间过滤器 同步。

FROM my_index
| WHERE custom_timestamp >= ?_tstart AND custom_timestamp < ?_tend

您还可以将 ?_tstart?_tend 参数与 BUCKET 函数一起使用,以便在 ES|QL 可视化效果 中创建自动递增的时间段。例如

FROM kibana_sample_data_logs
| STATS average_bytes = AVG(bytes) BY BUCKET(@timestamp, 50, ?_tstart, ?_tend)

此示例使用 50 个时间段,这是时间段的最大数量。

您还可以使用 WHERE 命令和 NOW 函数来限制时间范围。例如,如果时间戳字段名为 timestamp,要查询最近 15 分钟的数据

FROM kibana_sample_data_logs
| WHERE timestamp > NOW() - 15minutes

在查询栏和结果表之间,Discover 显示日期直方图可视化效果。默认情况下,如果您查询的索引不包含 @timestamp 字段,则不会显示直方图。但您可以使用带有 ?_tstart?_tend 参数的自定义时间字段来启用它。

可视化效果会适应查询。查询的性质决定了可视化效果的类型。例如,此查询聚合每个目标国家/地区的总字节数

FROM kibana_sample_data_logs
| STATS total_bytes = SUM(bytes) BY geo.dest
| SORT total_bytes DESC
| LIMIT 3

结果可视化效果是显示前 3 个国家/地区的条形图

esql kibana bar chart

要更改可视化效果,例如更改可视化类型、轴和颜色,请单击铅笔按钮(esql icon edit visualization)。这将打开一个内联编辑器

esql kibana in line editor

您可以单击保存按钮(esql icon save visualization)将可视化效果保存到新的或现有的仪表板。保存到仪表板后,您将被带到“仪表板”页面。您可以继续更改可视化效果。单击右上角的选项按钮(esql icon options),然后选择 编辑 ES|QL 可视化效果 以打开内联编辑器

esql kibana edit on dashboard

您可以使用 ES|QL 查询在仪表板上创建面板。要将面板添加到仪表板,请在 仪表板 下,单击 添加面板 按钮,然后选择 ES|QL。

单击面板过滤器按钮(Panel filters button on panel header)检查 ES|QL 查询

esql dashboard panel query

您也可以从此处编辑 ES|QL 可视化效果。单击右上角的选项按钮(esql icon options),然后选择 编辑 ESQL 可视化效果 以打开内联编辑器。

esql dashboard panel edit visualization

您还可以 从 ES|QL 可视化效果的查询中添加仪表板控件

ES|QL ENRICH 命令使您能够使用来自另一个数据集的字段丰富您的查询数据集。在使用 ENRICH 之前,您需要创建并执行一个丰富策略。如果策略存在,它将由自动完成功能建议。如果不存在,请单击 单击以创建 以创建一个。

esql kibana enrich autocomplete

接下来,您可以输入策略名称、策略类型、源索引,以及可选的查询

esql kibana enrich step 1

单击 下一步 以选择匹配字段和丰富字段

esql kibana enrich step 2

最后,单击 创建并执行

现在,您可以在 ES|QL 查询中使用丰富策略

FROM kibana_sample_data_logs
| STATS total_bytes = SUM(bytes) BY geo.dest
| SORT total_bytes DESC
| LIMIT 3
| ENRICH countries

您可以使用 ES|QL 查询来创建警报。从“Discover”中,单击 警报 ,然后选择 创建搜索阈值规则 。这将打开一个面板,您可以使用 ES|QL 查询创建规则。接下来,您可以测试查询、添加连接器并保存规则。

esql kibana create rule
  • 当 Discover 处于 ES|QL 模式时,用于过滤数据的用户界面将被禁用。要过滤数据,请编写一个使用 WHERE 命令的查询。
  • Discover 最多显示 10,000 行。此限制仅适用于查询检索并在 Discover 中显示的行数。查询和聚合在完整的数据集上运行。
  • Discover 最多显示 50 列。如果查询返回超过 50 列,Discover 仅显示前 50 列。
  • 从 Discover 导出的 CSV 文件最多显示 10,000 行。此限制仅适用于查询检索并在 Discover 中显示的行数。查询和聚合在完整的数据集上运行。
  • 在没有任何过滤器的情况下一次查询多个索引可能会导致 Kibana 中出现错误,看起来像 [esql] > Unexpected error from Elasticsearch: The content length (536885793) is bigger than the maximum allowed string (536870888)。来自 ES|QL 的响应太长。使用 DROPKEEP 限制返回的字段数量。
© . All rights reserved.