搜索和分析数据

编辑

您可以将 Elasticsearch 用作基本的文档存储,以检索文档及其元数据。但是,Elasticsearch 的真正强大之处在于其高级搜索和分析功能。

您将结合使用 API 端点和查询语言来与您的数据交互。

REST API

编辑

使用 REST API 管理您的 Elasticsearch 集群,以及索引和搜索您的数据。为了测试目的,您可以直接从命令行或通过 Kibana 中的 Dev Tools 控制台 提交请求。在您的应用程序中,您可以使用您选择的编程语言中的 客户端

请参阅 Elasticsearch 入门,了解使用 _search 端点、将数据添加到 Elasticsearch 以及在 Query DSL 语法中运行基本搜索的实际示例。

查询语言

编辑

Elasticsearch 提供了许多查询语言来与您的数据交互。

Query DSL 是当今 Elasticsearch 的主要查询语言。

ES|QL 是一种新的管道查询语言和计算引擎,首次添加到版本 8.11 中。

ES|QL 尚未支持 Query DSL 的所有功能,例如全文搜索和语义搜索。期待每个版本中新的 ES|QL 功能和特性。

请参阅 查询语言,全面了解 Elasticsearch 中可用的查询语言。

Query DSL
编辑

Query DSL 是一种功能齐全的 JSON 风格查询语言,支持复杂的搜索、过滤和聚合。它是当今 Elasticsearch 最原始、最强大的查询语言。

_search 端点 接受以 Query DSL 语法编写的查询。

使用 Query DSL 搜索和过滤
编辑

Query DSL 支持各种搜索技术,包括以下内容:

  • 全文搜索:搜索已分析和索引的文本,以支持短语或邻近查询、模糊匹配等。
  • 关键字搜索:使用 keyword 字段搜索精确匹配。
  • 语义搜索:使用密集或稀疏向量搜索在 Elasticsearch 集群中生成的嵌入来搜索 semantic_text 字段。
  • 向量搜索:使用 kNN 算法搜索 Elasticsearch 集群外部生成的类似密集向量。
  • 地理空间搜索:使用地理空间查询搜索位置并计算空间关系。

了解 Query DSL 支持的全部查询范围。

您还可以使用 Query DSL 过滤数据。过滤器允许您通过检索与特定字段级条件匹配的文档来包含或排除文档。使用 filter 参数的查询指示 过滤器上下文

使用 Query DSL 分析
编辑

聚合 是使用 Query DSL 分析 Elasticsearch 数据的主要工具。聚合允许您构建数据的复杂摘要,并深入了解关键指标、模式和趋势。

由于聚合利用了与搜索相同的结构,因此它们的速度也非常快。这使您能够实时分析和可视化数据。您可以在同一个请求中,对相同的数据同时执行文档搜索、结果过滤和分析操作。这意味着聚合是在搜索查询的上下文中计算的。

以下聚合类型可用:

  • 指标:从字段值计算指标,例如总和或平均值。
  • :根据字段值、范围或其他条件将文档分组到桶中。
  • 管道:对其他聚合的结果运行聚合。

通过指定 搜索 APIaggs 参数来运行聚合。在 运行聚合 中了解更多信息。

ES|QL
编辑

Elasticsearch 查询语言 (ES|QL) 是一种用于过滤、转换和分析数据的管道查询语言。ES|QL 构建在新的计算引擎之上,其中搜索、聚合和转换函数直接在 Elasticsearch 本身中执行。ES|QL 语法也可用于各种 Kibana 工具中。

_query 端点 接受以 ES|QL 语法编写的查询。

目前,它支持 Query DSL 中可用功能的一个子集,例如聚合、过滤器和转换。它尚不支持全文搜索或语义搜索。

它提供了一套全面的 函数和运算符 用于处理数据,并与 Kibana 的 Discover、仪表板和可视化功能紧密集成。

ES|QL 入门 中了解更多信息,或尝试 我们的培训课程

可用查询语言列表

编辑

下表总结了所有可用的 Elasticsearch 查询语言,以帮助您为您的用例选择合适的语言。

名称 描述 用例 API 端点

Query DSL

Elasticsearch 的主要查询语言。一种功能强大且灵活的 JSON 风格语言,支持复杂查询。

全文搜索、语义搜索、关键字搜索、过滤、聚合等。

_search

ES|QL

8.11 中引入,Elasticsearch 查询语言 (ES|QL) 是一种用于过滤、转换和分析数据的管道查询语言。

最初针对处理日志和指标等时间序列数据而设计。与 Kibana 紧密集成,用于查询、可视化和分析数据。尚不支持全文搜索。

_query

EQL

事件查询语言 (EQL) 是一种用于基于事件的时间序列数据的查询语言。数据必须包含 @timestamp 字段才能使用 EQL。

专为威胁狩猎安全用例而设计。

_eql

Elasticsearch SQL

允许对 Elasticsearch 数据进行类似 SQL 的原生实时查询。JDBC 和 ODBC 驱动程序可用于与商业智能 (BI) 工具集成。

使熟悉 SQL 的用户能够使用熟悉的语法查询 Elasticsearch 数据,以进行 BI 和报表分析。

_sql

Kibana 查询语言 (KQL)

Kibana 查询语言 (KQL) 是一种基于文本的查询语言,用于在通过 Kibana UI 访问数据时过滤数据。

使用 KQL 过滤字段值存在、匹配给定值或在给定范围内的文档。

N/A