在 Kibana 中使用 ES|QL

编辑

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

本指南将向您展示如何在 Kibana 中使用 ES|QL。要跟随查询进行操作,请通过在 Kibana 的 集成 页面中选择 示例数据,选择 其他示例数据集,然后点击 示例 Web 日志 卡片上的 添加数据 来加载“示例 Web 日志”示例数据集。

启用或禁用 ES|QL

编辑

ES|QL 在 Kibana 中默认启用。可以使用 高级设置中的 enableESQL 设置禁用它。

这将隐藏各种应用程序中的 ES|QL 用户界面。但是,用户仍然可以访问现有的 ES|QL 工件,如已保存的搜索和可视化效果。

开始使用 ES|QL

编辑

要开始在 Discover 中使用 ES|QL,请打开主菜单并选择 Discover。接下来,从应用程序菜单栏中选择 尝试 ES|QL

查询栏

编辑

切换到 ES|QL 模式后,查询栏会显示一个示例查询。例如

from kibana_sample_data_logs | limit 10

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

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

点击 ES|QL 帮助 按钮可打开产品内置的参考文档,其中包含所有命令和函数,或者获取有助于您入门的推荐查询。

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

esql kibana auto complete

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

FROM kibana_sample_data_logs | LIMIT 10

使您的查询可读

编辑

为了提高可读性,您可以将每个处理命令放在新行上。以下查询与前一个查询相同

FROM kibana_sample_data_logs
| LIMIT 10

您可以使用查询编辑器页脚中的 在管道上添加换行符 按钮执行此操作。

Automatic line breaks for ES|QL queries

您可以通过拖动其底部边框来调整编辑器的高度。

警告

编辑

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

查询历史

编辑

您可以在查询栏中重用最近的 ES|QL 查询。在查询栏中,点击 显示最近的查询

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

esql discover query history

星标查询

编辑

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

在查询栏中,点击 显示最近的查询

最近 选项卡中,您可以为任何想要的查询添加星标。

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

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 命令

编辑

您还可以使用 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。

esql dashboard panel

点击面板过滤器按钮 (面板标题上的面板过滤器按钮) 检查 ES|QL 查询

esql dashboard panel query

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

esql dashboard panel edit visualization

创建富化策略

编辑

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] > Elasticsearch 返回意外错误:内容长度 (536885793) 大于允许的最大字符串长度 (536870888)。ES|QL 的响应过长。请使用 DROPKEEP 来限制返回的字段数量。