所有文章 > API使用场景 > Elasticsearch中的API规定
Elasticsearch中的API规定

Elasticsearch中的API规定

API应用程序介面可以作为不同软件应用程序之间的桥梁,使它们能够有效地进行通讯。Elasticsearch是一个强大的搜索和分析引擎,提供强大的API,让用户可以通过HTTP与Elasticsearch服务器交互

RESTful API遵循宝石性状态传输(REST)的原则,并提供标准化方法来执行各种操作,例如索引、搜索、更新删除文件。在本文中,我们将透过了解RESTful API、什么是API及其规定类型以及Elasticsearch中的常见API约定来详细了解Elasticsearch中的API约定。

REST 风格的 API

  • API或应用程序介面本质上是一组规则和协议,使不同的软件应用程序能够相互通讯。
  • 在Elasticsearch的上下文中,API提供了一种与Elasticsearch服务器交互的标准化方式,允许用户执行各种操作,例如索引搜索更新删除文件。在深入探讨Elasticsearch的API约定之前,我们首先来了解一下什么是RESTful API。REST,即表述性状态转移(Representational State Transfer),是一种设计网络应用的架构风格。它强调的是如何通过标准的HTTP方法来创建、读取、更新和删除资源,从而实现客户端与服务器之间的无状态交互。
  • RESTful API遵循某些原则,包括无状态、统一介面基于资源的架构。
  • 在 Elasticsearch 的上下文中,RESTful API 允许客户端穿透 HTTP 与 Elasticsearch 服务器进行通讯。
  • 使用标准 HTTP 方法(例如 GET、POST、PUT 和 DELETE)发出请求,并以 JSON 格式回传响应。

API 约定有什么用?

  • Elasticsearch 中的 API 规定是指设计 Elasticsearch API 并交互的指南和最佳实践。
  • 这些约定保证了不同API端点和操作的一致性可预测性和易用性。
  • 通过遵循这些约定,开发人员可以简化开发工作流程、提高计划代码的可维护性并增强整体系统能力。
  • 在 Elasticsearch API 规定中,规定了客户端Elasticsearch 服务器之间交换的请求和响应的结构和语法。
  • 了解这些对于有效使用 Elasticsearch 的功能至关重要。

1.多种指数

  • Elasticsearch 让我们可以同时使用索引,为组织和管理数据提供多种灵活性。
  • 对于多个索引交互时,我们可以在 API 请求中使用分区分隔值来指定它们。

例子:获取 /index1,index2/_search
{
“查询”:{
“match_all”:{}
}
}

该请求将跨索引 1 和索引 2 搜索文件。

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

  • Elasticsearch 支持索引名为日期数学表达式,让我们可以根据日期或时间间隔动态引用索引。
  • 此功能对于有效管理时间序列数据特别有用。

例子:GET /logs-2024.05.*/_search
{
“查询”:{
“匹配”:{
“状态”:“错误”
}
}
}

该请求将在与模式logs-2024.05.*匹配的索引中搜索文档,使我们能够搜索当月的错误日志。

3. 针对URL的访问控制

  • Elasticsearch 提供基于 URL 的访问控制机制来保护集群并根据用户角色和权限限制对特定 API 的访问。
  • 通过基于角色的访问控制(RBAC)的渗透配置,我们可以实施细粒度的访问策略,确保数据的机密性和权限管理的精确性。这样不仅能够有效保护敏感信息,还能确保用户仅获得其工作所需的确切权限,从而增强整体的安全性。

例子:获取 /_cluster/health

此请求检索 Elasticsearch 丛集的健康状态。但是,此 API 端点的访问可能会根据用户的角色和权限受到限制。

4. 常用項目

  • Elasticsearch API 提供各种常见选项,可以让您自行编辑和控制要求的行为。
  • 这些选项包括大小、来源、排序、过滤器和聚合等参数,使我们能够根据特定需求定制查询。通过这些灵活的设置,可以更精准地获取所需信息,提高数据处理的效率和准确性。

例子:GET /index/_search
{
“查询”:{
“match_all”:{}
},
“大小”:10,
“排序”:[
{
“时间戳”:“desc”
}
]
}

在此请求中,size参数将结果数量限制为10个,sort参数根据时间栏位对结果进行降序排序。

Elasticsearch中的常见API规定

1.REST接口

Elasticsearch 透过 HTTP 公开其 API,即西藏性状态传输 (REST) 的原理。这意味着可以使用标准 HTTP 方法(GET、POST、PUT、DELETE)访问 Elasticsearch API 端点,并遵循 RESTful URL 模式。例如:

  • GET /index/_search:从指定索引搜索文件。
  • POST /index/_doc:将新文件添加至索引。
  • PUT /index/_settings:更新索引设置。

2. 索引命名约定

  • 在Elasticsearch中使用索引时,通常的做法是使用小写字母数字字元和连字符作为索引名称。
  • 避免在索引名称中使用大写字元或特殊符号,以保证相容性和一致性。
  • 例如:

PUT/我的索引

3. 文件结构

  • Elasticsearch以JSON文档的形式存储数据,其中每个文档代表一个数据实体。
  • 同一索引中的各个文件必须遵循一致的文档结构,以促进查询和索引的高效率。
  • 例如:

{
“title”: “Elasticsearch 约定”,
“content”: “探索 Elasticsearch 中 API 约定的最佳实务。”,
“tags”: [“elasticsearch”, “API”, “conventions”]
}

4. 查询DSL

  • Elasticsearch 提供了强大的查询网域特定语言 (DSL),用于对索引数据执行搜索和聚合。
  • 查询 DSL 由基于 JSON 的查询对象组成,这些对象可以调用并组合到当今复杂的查询查询。
  • 例如:

{
“查询”:{
“匹配”:{
“标题”:“Elasticsearch”
} }}

5. 批次操作

  • 为了提高索引功能,Elasticsearch 支持补充索引操作,允许在单一 API 调用中对多个文件创建索引。
  • 这可以减少网路开销并提高索引大型数据集时的吞吐量。
  • 例如:

POST /_bulk
{“index”:{“_index”:”my-index”,”_id”:”1″}}
{“title”:”文檔 1″,”content”:”Lorem ipsum dolor sat amet.” }
{“index”:{“_index”:”my-index”,”_id”:”2″}}
{“title”:”文件2″,”content”:”Consectetur adipiscing精英。”}

6.错误原理

  • Elasticsearch API 遵循一致的错误响应格式,提供详细的错误信息和状态码,帮助开发人员诊断和解决问题。
  • 在客户端应用程序中正确处理这些错误至关重要,针对具体的错误场景作出适当的响应是关键。)
  • 例如:

{
“錯誤”:{
“root_cause”:[
{
“type”:“index_not_found_exception”,
“reason”:“沒有這樣的索引[不存在的索引]”,
“resource.type”: “index_or_alias”,
“資源。 id”: “不存在的索引”,
“index_uuid”:“_na_”,
“index”:“不存在的索引”
}
],
“type”:“index_not_found_exception”,
“reason”:“沒有這樣的索引[不存在」存在的索引]”,
“resource.type”: “index_or_alias”,
“resource.id”:“不存在的索引”,
“index_uuid”:“_na_”,
“index”:“不存在的索引”
} ,
“狀態”:404
}

實例

讓我們透過幾個實際的例子來說明這些API約定:

範例 1:索引文檔

要使用 RESTful 介面將文件索引到 Elasticsearch 中:PUT /my-index/_doc/1
{
“title”: “範例文件”,
“content”: “這是一個用來說明目的的範例文件。”,
“tags”: [“example”, “illustration”]
}

範例2:搜尋文檔

若要搜尋包含特定關鍵字的文件:取得 /my-index/_search
{
“查詢”:{
“匹配”:{
“內容”:“樣本”
}
}
}

結論

了解API對於有效使用Elasticsearch API至關重要。可以簡化開發工作流程並增強整體使用者體驗。

原文链接:API Conventions in Elasticsearch

#你可能也喜欢这些API文章!