跳到主要内容

搜索和分析数据

虽然 Elasticsearch 可以作为一个基本的文档存储使用,但它真正的强大之处在于其高级搜索和分析能力。用户通过一个 API 端点和一个查询语言的组合来与数据交互。

REST API​

REST API 用于管理集群以及索引和搜索数据。

  • 测试时:从命令行或通过 Kibana 中的 Dev Tools Console 提交请求。
  • 应用程序中:使用你选择的编程语言的官方客户端。

参阅"Elasticsearch 第一步"获取一个使用 _search 端点、添加数据和基本 Query DSL 搜索的动手示例。

查询语言​

Elasticsearch 提供多种查询语言。Query DSL 是目前的主要语言;ES|QL 是一种较新的管道式查询语言和计算引擎,最早在 8.11 版本中引入,尚不支持所有 Query DSL 功能。

Query DSL​

Query DSL 是一种功能齐全的 JSON 风格查询语言,用于复杂的搜索、过滤和聚合;它是最早出现且最强大的语言。由 _search 端点接受。

使用 Query DSL 支持的搜索类型:

  • 全文搜索:搜索经过分析/索引的文本,支持短语或邻近查询、模糊匹配等。
  • 关键词搜索:使用 keyword 字段进行精确匹配。
  • 语义搜索:使用稠密或稀疏向量搜索 semantic_text 字段,嵌入在 Elasticsearch 集群内部生成。
  • 向量搜索:对稠密向量进行 k 近邻(kNN)搜索,适用于在 Elasticsearch 之外生成的嵌入。
  • 地理空间搜索:基于位置的查询和空间关系计算。

过滤:过滤器根据字段级别的条件包含/排除文档;使用 filter 参数的查询表示过滤上下文。

使用 Query DSL 进行分析 — 聚合:

  • 聚合是主要的分析工具,用于构建关键指标、模式和趋势的摘要。
  • 它们利用与搜索相同的数据结构,因此速度非常快;搜索、过滤和分析可以在单个请求中、在搜索查询的上下文中完成。
  • 三种聚合类型:指标(Metric)(求和、平均值等)、桶(Bucket)(按值、范围或条件对文档分组)和 管道(Pipeline)(对其他聚合的结果进行聚合)。
  • 通过搜索 API 的 aggs 参数运行。

ES|QL​

ES|QL(Elasticsearch Query Language)是一种管道式语言,用于过滤、转换和分析数据,构建在新的计算引擎之上,直接在 Elasticsearch 中执行搜索、聚合和转换。由 _query 端点接受;其语法可在各种 Kibana 工具中使用。

ES|QL 支持 Query DSL 功能的一个子集,但正在快速发展;它包含一整套函数和运算符,并与 Kibana Discover、仪表板和可视化深度集成。学习资源:"ES|QL 入门"和 Elastic 培训课程"ES|QL 简介"。

可用的查询语言​

名称描述用例API 端点
Query DSL主要语言;强大、灵活的 JSON 风格语言全文、语义、关键词搜索,过滤,聚合_search
**ESQL**管道式语言(自 8.11 起),用于过滤/转换/分析;最初面向时间序列(日志、指标);尚不支持全文搜索与 Kibana 集成的查询/可视化
EQL事件查询语言,用于基于事件的时间序列数据;需要 @timestamp 字段威胁狩猎 / 安全_eql
Elasticsearch SQL原生的、实时的类 SQL 查询;提供用于 BI 工具的 JDBC/ODBC 驱动面向 SQL 用户的 BI 和报表_sql
KQLKibana 查询语言 — 在 Kibana UI 中基于文本的过滤(存在/匹配/范围)在 Kibana 中过滤文档无

原文链接