搜索和分析数据

编辑

你可以将 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 的用户可以使用熟悉的语法(用于 BI 和报告)查询 Elasticsearch 数据。

_sql

Kibana 查询语言 (KQL)

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

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

不适用