正在加载

使用 ES|QL

Elastic Stack Serverless

Elasticsearch 查询语言 ES|QL 使您无需离开 Discover 即可更轻松地探索数据。

本页上的示例使用 Discover 和 Lens 中的 Kibana 示例 Web 日志来探索数据和创建可视化。您也可以按照添加示例数据进行安装。

提示

有关完整的 ES|QL 文档,请参阅 ES|QL 文档。有关 Kibana 中 ES|QL 的更详细概述,请参阅在 Kibana 中使用 ES|QL

要在 Discover 中查看 ES|QL 选项,必须从 Kibana 的高级设置启用 enableESQL 设置。 默认情况下已启用。

要加载示例数据

  1. 转到 Discover

  2. 从应用程序菜单栏中选择 Try ES|QL

    提示

    如果您在 Discover 的默认模式下输入了 KQL 或 Lucene 查询,它会自动转换为 ES|QL。

    假设我们想了解用户拥有什么操作系统以及他们的机器上有多少 RAM。

  3. 将时间范围设置为过去 7 天

  4. 复制下面的查询

    FROM kibana_sample_data_logs
    | KEEP machine.os, machine.ram
    
    1. 我们专门寻找我们刚刚安装的示例 Web 日志中的数据。
    2. 我们只保留结果表中的 machine.osmachine.ram 字段。
    提示

    将每个处理命令放在新的一行上以提高可读性。

  5. 点击 ▶Run查询结果的图像

    注意

    ES|QL 关键字不区分大小写。

让我们将 geo.dest 添加到我们的查询中,以查找访问的地理目的地并限制结果。

  1. 复制下面的查询

    FROM kibana_sample_data_logs
    | KEEP machine.os, machine.ram, geo.dest
    | LIMIT 10
    
  2. 再次单击 ▶Run。 您可以注意到该表现在限制为 10 个结果。 可视化也根据查询自动更新,并为您分解了数据。

    注意

    当您不指定任何要使用 KEEP 保留的特定字段时,可视化不会自动分解。 相反,可视化上方会出现一个附加选项,让您可以手动选择一个字段。

    An image of the extended query result

我们现在将更进一步,按机器 RAM 对数据进行排序,并过滤掉 GB 目的地。

  1. 复制下面的查询

    FROM kibana_sample_data_logs
    | KEEP machine.os, machine.ram, geo.dest
    | SORT machine.ram desc
    | WHERE geo.dest != "GB"
    | LIMIT 10
    
  2. 再次单击 ▶Run。 表格和可视化不再显示 geo.dest 字段值为“GB”的结果,并且结果现在基于 machine.ram 字段在表格中按降序排序。

    An image of the full query result

  3. 单击保存以将查询和可视化保存到仪表板。

您可以通过单击铅笔图标来更改可视化。 这会打开其他设置,让您可以根据自己的喜好调整图表类型、轴、细分、颜色和显示的信息。 如果您不确定要走哪条路线,请查看可视化编辑器中提供的建议之一。

如果您想保留可视化并将其添加到仪表板,您可以使用软盘图标保存它。

默认情况下,当索引包含 @timestamp 字段时,ES|QL 会识别时间序列数据。 这为您的查询启用了时间范围选择器和可视化选项。

如果您的索引没有显式的 @timestamp 字段,但有不同的时间字段,您仍然可以通过在查询中调用 ?_start?_tend 参数来启用时间范围选择器和可视化选项。

例如,电子商务示例数据集没有 @timestamp 字段,但有一个 order_date 字段。

默认情况下,查询此数据集时,时间序列功能未激活。 不会生成可视化,并且时间选择器已禁用。

FROM kibana_sample_data_ecommerce
| KEEP customer_first_name, email, products._id.keyword
ESQL query without time series capabilities enabled

在仍然查询相同的数据集时,通过添加基于 order_date 字段的 ?_start?_tend 参数,Discover 启用了时间序列功能。

FROM kibana_sample_data_ecommerce
| WHERE order_date >= ?_tstart and order_date <= ?_tend
ESQL query with a custom time field enabled

ES|QL 编辑器支持LOOKUP JOIN命令,并建议查找模式索引和连接条件字段。

Using the LOOKUP JOIN command to autocomplete an ES|QL query

© . All rights reserved.