Elasticsearch 中的 API 约定

2025年3月17日 | 阅读 3 分钟

在 Web 中,API 是一组用于访问特定应用程序中软件组件的函数调用。 例如,Facebook API 允许开发人员访问 Facebook 中的数据(如 DOB 或状态更新)或其他功能来创建应用程序。 Elasticsearch 提供 REST API,并且它还使用本章中讨论的一些约定。

Elasticsearch REST API 通过 JSON over HTTP 暴露。 它使用本章中列出的以下约定。 这些约定可以应用于整个 REST API。

  1. 多个索引
  2. 索引名称中的日期数学支持
  3. 基于 URL 的访问控制
  4. 常用选项

多个索引

在 API 中,大多数操作(如搜索)都是针对一个或多个索引的。 这有助于用户通过整个 API 在多个位置执行各种操作(如搜索)。 用户可以通过执行一次搜索查询来搜索所有可用数据。

对于这些查询,使用了一些符号,如下所示

  1. 逗号分隔符号 (,)
  2. 通配符符号 (*, +, -)
  3. URL 查询字符串参数
  4. allow_no_indices
  5. _all 关键字用于所有索引

这些不同的符号用于对多个索引执行操作。

索引名称中的日期数学支持

此 API 约定允许用户搜索一系列时间序列索引。 这种类型的搜索限制了正在搜索的索引的数量范围,而不是搜索所有时间序列索引。 这将减少集群的负载并提高执行性能。

  • 几乎所有 API 都支持包含 索引 的日期数学
  • Elasticsearch 提供此约定以根据日期和时间搜索索引。
  • 为此使用了数学运算,我们需要以特定的格式指定日期和时间,以查找特定日期的数据。

表达式:<static_name {date_math_expr {date_format|time_zone}}>

  1. static_name
  2. date_math_expr
  3. date_format
  4. time_zone

例如: <accountdetail - {now-2d { YYYY-MM-dd|utc }}>

  • static_name 是表达式的一部分,不能更改。 它在每个日期数学索引中保持不变。
  • date_math_expr 包含要写入索引的日期格式(例如 dd-MM-YYYY)和时间。 默认值为 YYYY-MM-dd,这是可以更改的。
  • 假设今天的日期是 2020 年 5 月 18 日,则它将返回 2020-05-16 的帐户详细信息。
表达结果
<accountdetail - {now-d}>accountdetails - 2020-05-18
<accountdetail - {now-2M}>accountdetails - 2020-03-19
<accountdetail - {now- {YYYY-MM}}>accountdetails - 2020-05

基于 URL 的访问控制

许多用户使用此约定与代理来安全地访问 Elasticsearch 索引。

Elasticsearch 提供了几个 API,允许用户在请求正文中指定单独的请求,例如 multi_get、multi_search 和批量请求等。 用户可以选择在 URL 中指定索引,这使得基于 URL 的访问控制更具挑战性。

elasticsearch.yml 文件中添加以下设置以禁用默认操作

默认情况下,它设置为 true

常用选项

Elasticsearch 提供了以下常用选项

  1. 漂亮的格式结果
  2. 人类可读的输出
  3. 日期数学
  4. 扁平设置
  5. 无值
  6. 时间单位
  7. 参数
  8. 模糊度
  9. 距离单位
  10. 字节大小单位
  11. 无单位数量
  12. 启用堆栈跟踪
  13. 响应过滤
  14. 查询设置中的请求正文

现在,我们将详细讨论一些常用选项

漂亮的格式结果

附加以下 URL 查询参数 (pretty = true;) 以获得格式良好的 JSON 对象。

人类可读的输出

“人类可读的输出”选项用于将统计响应更改为计算机可读形式或人类可读形式。

  • 如果设置为 human = false,则将其转换为计算机可读形式的统计响应。
  • 如果设置为 human = true,则将其转换为人类可读形式的统计响应。

它的默认值为 FALSE

例如——


下一个主题Elasticsearch vs Solr