当前位置:  首页>> 技术小册>> ElasticSearch零基础到实战

本文将介绍 Elasticsearch 的文档基础操作,包括创建、读取、更新和删除文档。

创建文档
在 Elasticsearch 中创建文档非常简单。只需指定文档的索引、类型和 ID,以及文档的内容,即可将文档存储到 Elasticsearch 中。

下面是一个创建文档的示例。假设要在名为 people 的索引中创建一个名为 Alice 的文档,其中包含两个字段 name 和 age。

  1. from elasticsearch import Elasticsearch
  2. es = Elasticsearch()
  3. doc = {
  4. "name": "Alice",
  5. "age": 20
  6. }
  7. es.create(index="people", id=1, body=doc)

在上面的代码中,index 参数指定了文档所在的索引,id 参数指定了文档的 ID,body 参数指定了文档的内容。

注意,如果指定的索引不存在,Elasticsearch 会自动创建它。如果文档 ID 已经存在,则会返回一个异常。

读取文档
读取文档也非常简单。只需指定文档的索引、类型和 ID,即可从 Elasticsearch 中读取文档的内容。

下面是一个读取文档的示例。假设之前创建了一个 id 为 1 的文档,它的 name 字段值为 Alice,age 字段值为 20。

  1. from elasticsearch import Elasticsearch
  2. es = Elasticsearch()
  3. doc = es.get(index="people", id=1)
  4. print(doc['_source'])

在上面的代码中,index 参数指定了文档所在的索引,id 参数指定了文档的 ID。调用 get 方法可以从 Elasticsearch 中读取文档的内容,返回结果是一个包含文档内容的 JSON 对象。通过访问 _source 字段,可以获取文档的具体内容。

注意,如果指定的索引、类型或 ID 不存在,则会返回一个异常。

更新文档
除了创建文档,还可以更新已有文档。Elasticsearch 提供了一种简单的方式,即使用 update API。

下面是一个更新文档的示例。假设之前创建了一个 id 为 1 的文档,它的 name 字段值为 Alice,age 字段值为 20。

  1. from elasticsearch import Elasticsearch
  2. es = Elasticsearch()
  3. doc = {
  4. "doc": {
  5. "name": "Bob",
  6. "age": 25
  7. }
  8. }
  9. es.update(index="people", id=1, body=doc)

此时,文档的 name 字段被更新为 Bob,age 字段被更新为 25。

删除文档
接下来,我们将介绍如何删除文档。删除文档可以使用 DELETE 请求。以下是一个示例:

  1. response = es.delete(index="my-index", id=1)
  2. print(response)

这将从名为 my-index 的索引中删除 ID 为 1 的文档。如果成功删除文档,将返回一个包含以下信息的 JSON 响应:

  1. {
  2. "_index": "my-index",
  3. "_type": "_doc",
  4. "_id": "1",
  5. "_version": 2,
  6. "result": "deleted",
  7. "_shards": {
  8. "total": 2,
  9. "successful": 1,
  10. "failed": 0
  11. },
  12. "_seq_no": 1,
  13. "_primary_term": 1
  14. }

如果文档不存在,将返回以下 JSON 响应:

  1. {
  2. "error": {
  3. "root_cause": [
  4. {
  5. "type": "index_not_found_exception",
  6. "reason": "no such index [my-index]",
  7. "index_uuid": "_na_",
  8. "resource.type": "index_or_alias",
  9. "resource.id": "my-index",
  10. "index": "my-index"
  11. }
  12. ],
  13. "type": "index_not_found_exception",
  14. "reason": "no such index [my-index]",
  15. "index_uuid": "_na_",
  16. "resource.type": "index_or_alias",
  17. "resource.id": "my-index",
  18. "index": "my-index"
  19. },
  20. "status": 404
  21. }

现在,我们已经了解了如何向索引添加、获取和删除文档。


该分类下的相关小册推荐: