Jupyter AI

11 Elasticsearch 索引与文档操作之添加、更新与删除文档

📅 发表日期: 2024年8月15日

分类: 🔍Elasticsearch 入门

👁️阅读: --

在上篇中,我们学习了如何创建索引,这是使用 Elasticsearch 的第一步。在这一篇中,我们将深入探讨如何在索引中进行文档操作,包括文档的添加、更新与删除。我们将通过具体的案例来帮助理解这些基本操作。

添加文档

在 Elasticsearch 中,您可以通过 PUTPOST 请求来添加文档。假设我们有一个名为 books 的索引,其中存储了一些书籍的信息。每个书籍文档可以包含 title(标题)、author(作者) 和 published_year(出版年份)等字段。

添加单个文档

我们可以用如下命令添加一个文档:

PUT /books/_doc/1
{
  "title": "Elasticsearch: The Definitive Guide",
  "author": "Clinton Gormley",
  "published_year": 2015
}

在这个例子中,1 是文档的 ID。如果您不提供文档 ID,Elasticsearch 将自动为您分配一个。

添加多个文档

如果您想一次性添加多个文档,可以使用 _bulk API。例如:

POST /_bulk
{ "index": { "_index": "books", "_id": "2" } }
{ "title": "Learning Elasticsearch", "author": "Abhishek Thakur", "published_year": 2018 }
{ "index": { "_index": "books", "_id": "3" } }
{ "title": "Elasticsearch in Action", "author": "Rafiq Omar", "published_year": 2015 }

此代码片段中,我们使用 POST /_bulk 发送多个文档,这样可以大幅提高数据写入的效率。

更新文档

有时候我们需要更新已有的文档。在 Elasticsearch 中,您可以使用 POST 请求来更新文档。

更新单个文档

假设我们想要更新文档 ID 为 1 的书籍信息,新增 genre(类型)字段,可以使用如下命令:

POST /books/_doc/1/_update
{
  "doc": {
    "genre": "Technology"
  }
}

在这里,我们使用了 _update API,修改了文档的部分内容。

使用脚本更新

您还可以使用脚本来更新文档,以下是一个示例:

POST /books/_doc/1/_update
{
  "script": {
    "source": "ctx._source.published_year += 1",
    "lang": "painless"
  }
}

上述示例利用 Painless 脚本语言将出版年份加一。

删除文档

最后,我们来看看如何删除文档。如果您不再需要某个文档,可以通过 DELETE 请求来删除它。

删除单个文档

例如,删除文档 ID 为 1 的文档:

DELETE /books/_doc/1

执行此命令后,文档将从 books 索引中移除。

批量删除文档

同样,您可以使用 _bulk API 批量删除文档:

POST /_bulk
{ "delete": { "_index": "books", "_id": "2" } }
{ "delete": { "_index": "books", "_id": "3" } }

如上所示,一次性删除多个文档。

小结

通过本文的学习,我们已经掌握了如何在 Elasticsearch 中对文档进行添加、更新和删除操作。这些操作是使用 Elasticsearch 进行数据管理的基础,将为后续的文档检索打下坚实的基础。在下一篇中,我们将探索如何在 Elasticsearch 中检索文档,以便从我们刚刚管理的数据中提取信息。

🔍Elasticsearch 入门 (滚动鼠标查看)