ES API约定
Elasticsearch中的API约定
在 Web 中,API 是一组函数调用,用于访问特定应用程序中的软件组件。例如,Facebook API 允许开发人员从 Facebook 访问数据(如 DOB 或状态更新)或其他功能以创建应用程序。 Elasticsearch 提供 REST API 并使用本章下面讨论的一些约定。
Elasticsearch REST API 通过 JSON 通过 HTTP。它使用本章下面列出的以下约定。这些约定可以应用于整个 REST API。
- 多个索引
- 索引名称中的日期数学支持
- 基于 URL 的访问控制
- 常用选项
Multiple Indices
在API 中,大多数操作如搜索都是针对一个或多个索引的。这有助于用户通过整个 API 在多个位置执行各种操作(如搜索)。用户可以通过执行一次搜索查询来搜索所有可用数据。
对于这些查询,使用了一些符号,如下所示:
- 逗号分隔符号(,)
- 通配符(*、+、-)
- URL 查询字符串参数
- allow_no_indices
- _所有索引的所有关键字
这些不同的符号用于对多个索引执行操作。
索引名称中的日期数学支持
此 API 约定允许用户搜索一系列时间序列索引。这种类型的搜索限制了正在搜索的索引数量范围,而不是搜索所有时间序列索引。这将减少集群上的负载并提高执行性能。
- 几乎所有 API 都支持包含索引
的日期数学
- Elasticsearch 提供了这个约定来根据日期和时间搜索索引。
- 在我们需要以特定格式指定日期和时间以查找特定日期的数据时,使用哪种数学运算。
表达式:
- 静态名称
- date_math_expr
- 日期格式
- 时区
例如:
- static_name 是不能更改的表达式的一部分。它在每个日期数学索引中保持不变。
- date_math_expr 包含要写入索引的日期格式(如 dd-MM-YYYY)和时间。默认值为 YYYY-MM-dd,可更改。
- 假设今天的日期是 2020 年 5 月 18,那么它将返回 2020-05-16 的帐户详细信息。
表达 | 结果 |
<accountdetail - {now-d}> | 账户详情-2020-05-18 |
<accountdetail - {now-2M}> | 账户详情-2020-03-19 |
<accountdetail - {now- {YYYY-MM}}> | 帐户详细信息-2020 年 5 月 |
基于 URL 的访问控制
许多用户使用具有此约定的代理来安全访问 Elasticsearch 索引。
Elasticsearch 提供了几个 API允许用户在请求正文中指定单个请求,例如 multi_get、multi_search 和批量请求等。用户可以选择在 URL,这使得基于 URL 的访问控制更具挑战性。
在 elasticsearch.yml 文件中添加以下设置以禁用默认操作:
rest.action.multi_allow_explicit_index = false;
默认设置为true。
常用选项
Elasticsearch 提供的常用选项有:
- 漂亮的结果
- 可读的输出
- 日期数学
- 平面设置
- 没有值
- 时间单位
- 参数
- 模糊性
- 距离单位
- 字节大小单位
- 无单位数量
- 启用堆栈跟踪
- 响应过滤
- 查询设置中的请求正文
现在,我们将详细讨论一些常用选项:
漂亮的结果
附加以下 URL 查询参数(pretty = true; ) 以在格式良好的 JSON 对象中获取结果。
pretty = true;
人类可读输出
人类可读输出选项用于以计算机可读形式或人类可读形式更改统计响应。
- 如果设置 human = false,它会将统计响应转换为计算机可读的形式。
- 如果设置 human = true,它会将统计响应转换为人类可读的形式。
它的默认值是FALSE。
例如:
if human = true, then distance_kilometer = 50KM if human = false, then distance_meter = 50000
下一章:ES API
在 Elasticsearch 教程的这一部分,我们将讨论 Elasticsearch 中存在的各种类型的 API。为了与数据库交互,我们将这些 API 与 HTTP 方法(如 GET、PUT、POST 和 DELETE)一起 ...