logo图片
Elasticsearch教程

ES 文档API

Elasticsearch 文档API

正如我们在早期教程中已经讨论过的,Elasticsearch 是一个面向文档的数据库,它以文档形式存储所有数据。 API 使用 JSON 文档格式来存储数据。 文档 API 是那些在文档级别执行操作的 API。因此,如果您想在文档级别执行某些操作,则必须使用文档出现。借助文档 API,您可以很好地做到这一点。
在 Elasticsearch 中,文档 API 分为两类: 单文档API a> 和 多文档 API。我们将通过示例详细讨论每个 API-

1.单个文档 API

如果您想对单个文档而不是一组文档执行操作,这些 API 非常有用。因此,当您要对单个文档执行操作时,可以使用这些单个文档 API。单文档 API 进一步分为四种 API,如下所示:
索引 API 获取 API 更新 API 删除 API
首先,创建一个索引来使用所有这些 API。使用以下命令-
复制代码
PUT student
这里PUT是请求方法,student是索引名。
响应
Elasticsearch Document APIs

索引 API

此 API 有助于在发出请求时在指定索引中添加文档。 它还允许我们在文档已经存在的情况下更新文档。 Index API 用于完全替换现有文档。 Index API 允许我们添加和更新文档。 我们必须使用 POST 方法在需要指定文档 ID 的地方添加数据。
示例
使用以下代码在索引中添加数据-
复制代码
POST student/_doc/02/
{
"name ": "Stan Lee",
"gender": "Male",
"phone": "9876543211",
"street": " new Rochelle", 
"city": "New York", 
"country": "United States", 
"zip": "10029"
}
这里POST是请求方法,_doc是文档类型,用于在索引中添加数据。
响应
如果您在响应正文中获得以下输出,则成功添加请求正文中提供的数据。
{ 
"index": "student",
"type": "_doc",
"id": "02",
"version": 1,
"result": "created",
"_shards": {
"total":2,
"successful":1,
"failed": 0
}
"_seq_no": 0,
"_primary_term": 1
}
在浏览器中看下面的截图-
Elasticsearch Document APIs

获取 API

Get API 有助于检索或读取存储在索引中的数据。 此 API 负责从索引中检索指定的 JSON 文档。
示例
在这个示例中,我们将使用GET API来读取文档。创建一个新请求并指定索引名称和文档 ID。它将获取并在响应正文中显示结果。
索引名称 = student
文档 ID = 02
复制代码
GET student/_doc/02/
选择 GET 方法并将剩余的代码附加到请求字符串中。
响应
下面的输出将显示在上面的响应正文中请求-
{ 
"index": "student",
"type": "_doc",
"id": "02",
"version": 1,
"_seq_no": 0,
"_primary_term": 1,
"found": true,
"_source": {
"name ": "Stan Lee",
"gender": "Male",
"phone": "9876543211",
"street": "New Rochelle", 
"city": "New York", 
"country": "United States", 
"zip": "10029"
}
}
看下面的截图,它将如何在浏览器上显示-
Elasticsearch Document APIs

Update API

Update API 有助于更新现有文档,它使用脚本和版本控制。它允许传递合并到现有文档的部分文档。 _update 在发出请求时使用。
Script 关键字用于创建执行此操作的查询请求。它可以修改、更新或删除文档。您还可以使用 doc 代替 script 关键字来更新文档。 版本控制用于确保在获取和重新索引期间未发生更新。 请记住,它只会更新单个文档,而不是全部。 它接受两个参数索引名称和文档ID,即
示例
Elasticsearch 提供了 _update API 和 POST 请求方法来更新文档。在本例中,我们将把 zip 从 10029 替换为 94003、
方法: POST
API: _update
索引名称: student
类型: _doc
更新数据: 邮政编码
执行以下查询并更新文档。
复制代码
POST student/_doc/02/
_update
{
"doc": {
"zip": "94003"
}
} 
响应
如果输出相同,则文档更新成功。
{ 
"index": "student",
"type": "_doc",
"id": "02",
"version": 2,
"result": "updated",
"shards": {
"total": 2,
"successful": 1,
"failed": 0
}
"_seq_no": 1,
"_primary_term": 1
}
看下面的截图它在浏览器上的样子-
Elasticsearch Document APIs

删除API

您可以使用此 API 删除特定索引、文档或映射。 向 Elasticsearch 发送 HTTP DELETE 请求以执行删除操作。 创建删除查询不需要大语句。 使用 _delete API 并指定要删除的索引名称。
示例
我们将使用DELETE API 来删除存储在索引中的文档。因此,只需设置 DELETE 请求方法并提供要删除的索引名称和文档 ID。
复制代码
DELETE student/_doc/02/
Response
如果您得到以下输出,则文档 02 已成功删除。
{ 
"index": "student",
"type": "_doc",
"id": "02",
"version": 3,
"result": "deleted",
"shards": {
"total": 2,
"successful": 1,
"failed": 0
}
"_seq_no": 2,
"_primary_term": 1
}
看下面的截图在浏览器上查看结果-
Elasticsearch Document APIs

2.多文档 API

与单个文档 API 不同,您可以使用多文档 API 来跨多个文档进行查询。 例如-批量删除或更新数据,重新索引等。多文档API进一步分为五个API,如下所示:
多获取 API 批量 API 按查询删除 API 按查询更新 API 重新索引 API

多获取API

它使用 _docs 索引数组检索多个文档。 它提供相同的功能,类似于 Single Get API。唯一的区别是此 API 返回多个文档。 为了提取文档,我们使用 doc 数组来指定所有这些文档的索引、类型和 ID。 我们需要使用 POST API 从索引中检索多个文档。那还不够;我们还需要在请求字符串中附加 _mget 并定义文档 ID 查询空间以获取多条记录。
请记住,必须在索引(数据库)中添加三四个以上的记录才能执行此操作。请参阅下面的示例-
复制代码
POST student/_mget/
{
  "docs": [
   {  
       "_index": "student", "_type": "_doc", "_id": "01"
   },
   {  
       "_index": "student", "_type": "_doc", "_id": "03"
   }
  ]
}
在这里,我们正在获取 ID 为 01 和 03 的文档。
响应
您将获得类似于以下响应的输出。
"docs": [
{ 
"index": "student",
"type": "_doc",
"id": "01",
"version": 1,
"_seq_no": 0,
"_primary_term": 1,
"found": true,
      "source": {
 "name": "Alen Paul",
 "gender": "Male",
 "phone": "9876543210", 
 "street": "Malen Park",
 "city": "California",
 "country": "United State",
 "zip": "94025",
                  }
}
"index": "student",
"type": "_doc",
"id": "03",
"version": 1,
"_seq_no": 3,
"_primary_term": 1,
"found": true,
      "source": {
 "name": "Stan Lee",
 "gender": "Male",
 "phone": "9876543211", 
 "street": "New Rochelle",
 "city": "New York",
 "country": "United State",
 "zip": "10029",
                  }
}
      ]
}
看下面的截图在浏览器上查看结果-
Elasticsearch Document APIs

BulkAPI

Bulk API 有助于批量上传或删除 JSON 对象。为此,请在单个请求中进行多个索引/删除操作。批量 API 类似于 Get API,并提供与其相同的所有其他功能。
添加"_bulk"关键字以调用此 API。 用于批量执行删除/更新/索引操作。
下面是一些批量命令的例子:
{ "delete": { "_index" : "student", "_type": "_docs", "_id": "02"} }
{ "update": { "_index" : "student", "_type": "_docs", "_id": "04"} } {"doc": {"field3": "value3"} } 

按查询删除 API

_delete_by_query 请求用于删除所有匹配的文档。 在处理此请求时,Elasticsearch(ES) 执行多次搜索以找到要删除的所有文档。
示例
执行以下查询并更新索引。这将删除所有具有 city = New York 的文档。
复制代码
POST student/_doc/
_delete_by_query
{
  "query": {
    "match": {
        "city": "New York"
    }
  }
}
响应
如果输出相同,则文档删除成功。
{ 
"took": 9376,
"timed_out": false,
"total": 3,
"deleted": 3,
"batches": 1,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled_millis": 0,
"request_per_second":-1,
"throttled_until_millis": 0,
"faliures": [ ]
}
请参阅下面的屏幕截图以更好地了解请求和响应在浏览器上的外观-
Elasticsearch Document APIs
如果我们使用 "script": {} 代替 field_name: value(即,"city": "New York"),它将删除所有存在的文档在学生索引中。请求查询将类似于-
{
  "query": {
    "match": {
        "match_all": {}
    }
  }
}

按 Q 更新

Elasticsearch 文档 API

正如我们在早期教程中已经讨论过的,Elasticsearch 是一个面向文档的数据库,它以文档形式存储所有数据。 API 使用 JSON 文档格式来存储数据。 文档 API 是那些在文档级别执行操作的 API。因此,如果您想在文档级别执行某些操作,则必须使用文档出现。借助文档 API,您可以很好地做到这一点。
在 Elasticsearch 中,文档 API 分为两类: 单文档API a> 和 多文档 API。我们将通过示例详细讨论每个 API-

1.单个文档 API

如果您想对单个文档而不是一组文档执行操作,这些 API 非常有用。因此,当您要对单个文档执行操作时,可以使用这些单个文档 API。单文档 API 进一步分为四种 API,如下所示:
索引 API 获取 API 更新 API 删除 API
首先,创建一个索引来使用所有这些 API。使用以下命令-
复制代码
PUT student
这里PUT是请求方法,student是索引名。
响应
Elasticsearch Document APIs

索引 API

此 API 有助于在发出请求时在指定索引中添加文档。 它还允许我们在文档已经存在的情况下更新文档。 Index API 用于完全替换现有文档。 Index API 允许我们添加和更新文档。 我们必须使用 POST 方法在需要指定文档 ID 的地方添加数据。
示例
使用以下代码在索引中添加数据-
复制代码
POST student/_doc/02/
{
"name ": "Stan Lee",
"gender": "Male",
"phone": "9876543211",
"street": " new Rochelle", 
"city": "New York", 
"country": "United States", 
"zip": "10029"
}
这里POST是请求方法,_doc是文档类型,用于在索引中添加数据。
响应
如果您在响应正文中获得以下输出,则成功添加请求正文中提供的数据。
{ 
"index": "student",
"type": "_doc",
"id": "02",
"version": 1,
"result": "created",
"_shards": {
"total":2,
"successful":1,
"failed": 0
}
"_seq_no": 0,
"_primary_term": 1
}
在浏览器中看下面的截图-
Elasticsearch Document APIs

获取 API

Get API 有助于检索或读取存储在索引中的数据。 此 API 负责从索引中检索指定的 JSON 文档。
示例
在这个示例中,我们将使用GET API来读取文档。创建一个新请求并指定索引名称和文档 ID。它将获取并在响应正文中显示结果。
索引名称 = student
文档 ID = 02
复制代码
GET student/_doc/02/
选择 GET 方法并将剩余的代码附加到请求字符串中。
响应
下面的输出将显示在上面的响应正文中请求-
{ 
"index": "student",
"type": "_doc",
"id": "02",
"version": 1,
"_seq_no": 0,
"_primary_term": 1,
"found": true,
"_source": {
"name ": "Stan Lee",
"gender": "Male",
"phone": "9876543211",
"street": "New Rochelle", 
"city": "New York", 
"country": "United States", 
"zip": "10029"
}
}
看下面的截图,它将如何在浏览器上显示-
Elasticsearch Document APIs

Update API

Update API 有助于更新现有文档,它使用脚本和版本控制。它允许传递合并到现有文档的部分文档。 _update 在发出请求时使用。
Script 关键字用于创建执行此操作的查询请求。它可以修改、更新或删除文档。您还可以使用 doc 代替 script 关键字来更新文档。 版本控制用于确保在获取和重新索引期间未发生更新。 请记住,它只会更新单个文档,而不是全部。 它接受两个参数索引名称和文档ID,即
示例
Elasticsearch 提供了 _update API 和 POST 请求方法来更新文档。在本例中,我们将把 zip 从 10029 替换为 94003、
方法: POST
API: _update
索引名称: student
类型: _doc
更新数据: 邮政编码
执行以下查询并更新文档。
复制代码
POST student/_doc/02/
_update
{
"doc": {
"zip": "94003"
}
} 
响应
如果输出相同,则文档更新成功。
{ 
"index": "student",
"type": "_doc",
"id": "02",
"version": 2,
"result": "updated",
"shards": {
"total": 2,
"successful": 1,
"failed": 0
}
"_seq_no": 1,
"_primary_term": 1
}
看下面的截图它在浏览器上的样子-
Elasticsearch Document APIs

删除API

您可以使用此 API 删除特定索引、文档或映射。 向 Elasticsearch 发送 HTTP DELETE 请求以执行删除操作。 创建删除查询不需要大语句。 使用 _delete API 并指定要删除的索引名称。
示例
我们将使用DELETE API 来删除存储在索引中的文档。因此,只需设置 DELETE 请求方法并提供要删除的索引名称和文档 ID。
复制代码
DELETE student/_doc/02/
Response
如果您得到以下输出,则文档 02 已成功删除。
{ 
"index": "student",
"type": "_doc",
"id": "02",
"version": 3,
"result": "deleted",
"shards": {
"total": 2,
"successful": 1,
"failed": 0
}
"_seq_no": 2,
"_primary_term": 1
}
看下面的截图在浏览器上查看结果-
Elasticsearch Document APIs

2.多文档 API

与单个文档 API 不同,您可以使用多文档 API 来跨多个文档进行查询。 例如-批量删除或更新数据,重新索引等。多文档API进一步分为五个API,如下所示:
多获取 API 批量 API 按查询删除 API 按查询更新 API 重新索引 API

多获取API

它使用 _docs 索引数组检索多个文档。 它提供相同的功能,类似于 Single Get API。唯一的区别是此 API 返回多个文档。 为了提取文档,我们使用 doc 数组来指定所有这些文档的索引、类型和 ID。 我们需要使用 POST API 从索引中检索多个文档。那还不够;我们还需要在请求字符串中附加 _mget 并定义文档 ID 查询空间以获取多条记录。
请记住,必须在索引(数据库)中添加三四个以上的记录才能执行此操作。请参阅下面的示例-
复制代码
POST student/_mget/
{
  "docs": [
   {  
       "_index": "student", "_type": "_doc", "_id": "01"
   },
   {  
       "_index": "student", "_type": "_doc", "_id": "03"
   }
  ]
}
在这里,我们正在获取 ID 为 01 和 03 的文档。
响应
您将获得类似于以下响应的输出。
"docs": [
{ 
"index": "student",
"type": "_doc",
"id": "01",
"version": 1,
"_seq_no": 0,
"_primary_term": 1,
"found": true,
      "source": {
 "name": "Alen Paul",
 "gender": "Male",
 "phone": "9876543210", 
 "street": "Malen Park",
 "city": "California",
 "country": "United State",
 "zip": "94025",
                  }
}
"index": "student",
"type": "_doc",
"id": "03",
"version": 1,
"_seq_no": 3,
"_primary_term": 1,
"found": true,
      "source": {
 "name": "Stan Lee",
 "gender": "Male",
 "phone": "9876543211", 
 "street": "New Rochelle",
 "city": "New York",
 "country": "United State",
 "zip": "10029",
                  }
}
      ]
}
看下面的截图在浏览器上查看结果-
Elasticsearch Document APIs

BulkAPI

Bulk API 有助于批量上传或删除 JSON 对象。为此,请在单个请求中进行多个索引/删除操作。批量 API 类似于 Get API,并提供与其相同的所有其他功能。
添加"_bulk"关键字以调用此 API。 用于批量执行删除/更新/索引操作。
下面是一些批量命令的例子:
{ "delete": { "_index" : "student", "_type": "_docs", "_id": "02"} }
{ "update": { "_index" : "student", "_type": "_docs", "_id": "04"} } {"doc": {"field3": "value3"} } 

按查询删除 API

_delete_by_query 请求用于删除所有匹配的文档。 在处理此请求时,Elasticsearch(ES) 执行多次搜索以找到要删除的所有文档。
示例
执行以下查询并更新索引。这将删除所有具有 city = New York 的文档。
复制代码
POST student/_doc/
_delete_by_query
{
  "query": {
    "match": {
        "city": "New York"
    }
  }
}
响应
如果输出相同,则文档删除成功。
{ 
"took": 9376,
"timed_out": false,
"total": 3,
"deleted": 3,
"batches": 1,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled_millis": 0,
"request_per_second":-1,
"throttled_until_millis": 0,
"faliures": [ ]
}
请参阅下面的屏幕截图以更好地了解请求和响应在浏览器上的外观-
Elasticsearch Document APIs
如果我们使用 "script": {} 代替 field_name: value(即,"city": "New York"),它将删除所有存在的文档在学生索引中。请求查询将类似于-
{
  "query": {
    "match": {
        "match_all": {}
    }
  }
}

按 Q 更新常用 API

按查询更新 API(_update_by_query) 对索引中存在的每个文档执行更新,而不更改源。 script 关键字用于创建执行此操作的查询请求。
示例
在此示例中,我们将所有城市为纽约的文档中的邮政编码更新为 29001、
方法: POST
API: _update_by_query
索引名称: student
类型: _doc
更新数据: 邮政编码
执行以下查询并更新文档。
复制代码
POST student/_doc/
_update_by_query
{
"script": {
    "inline": "ctx._source.zip=29001",
    "lang": "painless"
  },
  "query": {
    "match": {
        "city": "New York"
    }
  }
}
响应
如果输出相同,则文档更新成功。
{ 
"took": 346,
"timed_out": false,
"total": 3,
"updated": 3,
"deleted": 0,
"batches": 1,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled_millis": 0,
"request_per_second":-1,
"throttled_until_millis": 0,
"faliures": [ ]
}
响应将与下面的截图相同-
Elasticsearch Document APIs
这里,可以看到更新了3条记录,符合给定的条件。

Reindex API

这个API基本上用在我们需要另一个索引中的文档。我们使用 _reindex API 将文档数据从一个索引复制到另一个索引。借助此 API,我们可以轻松地从索引中复制文档并将其复制到另一个索引中。以下是有关 reindex API 的一些要点:
Reindex API 从源索引中提取文档并将该文档索引到目标索引。 _source 必须为源索引中存在的所有文档启用。 在调用 _reindex 之前,您必须先设置目标索引。
示例
执行以下查询以将文档从一个索引重新索引到另一个索引。
方法: POST
API: _reindex
索引名称: student
新索引: new_student
复制代码
POST 
_reindex
{
"source": {
    "index": "student"
  },
  "dest": {
        "index": "new_student"
  }
}
响应
如果输出相同,则文档复制成功。
{ 
"took": 1748,
"timed_out": false,
"total": 2,
"updated": 0,
"created": 2,
"deleted": 0,
"batches": 1,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled_millis": 0,
"request_per_second":-1,
"throttled_until_millis": 0,
"faliures": [ ]
}
看下面的截图,它在浏览器上的样子。
Elasticsearch Document APIs
因此,使用搜索 API,您可以看到复制到新索引中的所有文档,即 new_student。
昵称: 邮箱:
Copyright © 2020 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4