Elasticsearch 文档操作

Elasticsearch 是一个基于 Apache Lucene 构建的开源搜索和分析引擎。它使得存储、搜索和分析大量数据变得简单和快速。在本文中,我们将深入探讨如何在 Elasticsearch 中进行文档的添加、检索、更新、删除以及批量操作,帮助开发者更好地掌握 Elasticsearch 的使用。

5.1 添加文档

在 Elasticsearch 中,文档是可以被索引的基本信息单元。每个文档都有其唯一的 ID 和一系列可以被搜索的字段。文档以 JSON 格式表示,并存储在索引中。

添加单个文档

要添加一个文档到 Elasticsearch,可以使用 POSTPUT 方法。如果未指定文档 ID,则 Elasticsearch 会自动生成一个。以下是一个使用 POST 方法添加文档的示例:

bash 复制代码
POST /index_name/_doc
{
  "field1": "value1",
  "field2": "value2"
}

如果你已知文档的 ID 并想明确指定,可以使用 PUT 方法:

bash 复制代码
PUT /index_name/_doc/1
{
  "field1": "value1",
  "field2": "value2"
}

返回结果

成功添加文档后,Elasticsearch 会返回如下信息:

json 复制代码
{
  "_index": "index_name",
  "_type": "_doc",
  "_id": "1",
  "_version": 1,
  "result": "created",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "_seq_no": 0,
  "_primary_term": 1
}

5.2 检索文档

检索文档是 Elasticsearch 的核心功能之一。可以通过多种方式检索文档,包括基于文档 ID 的检索和使用查询语言进行更复杂的搜索。

通过 ID 检索文档

通过文档 ID 检索是最直接的方法:

bash 复制代码
GET /index_name/_doc/1

使用搜索 API

使用 Elasticsearch 的强大搜索功能,你可以通过多种查询类型(如匹配查询、范围查询等)来检索文档:

bash 复制代码
GET /index_name/_search
{
  "query": {
    "match": {
      "field1": "value1"
    }
  }
}

5.3 更新和删除文档

更新文档

更新操作可以通过 POST 方法的 _update API 完成,可以部分更新文档的字段:

bash 复制代码
POST /index_name/_doc/1/_update
{
  "doc": {
    "field2": "new_value"
  }
}

删除文档

删除操作同样简单,只需指定文档 ID:

bash 复制代码
DELETE /index_name/_doc/1

5.4 批量操作文档

批量 API 允许在单个请求中执行多个添加、更新或删除操作,这在处理大量数据时非常高效。

示例

以下是一个批量操作的示例,同时执行添加和删除操作:

bash 复制代码
POST /_bulk
{ "index" : { "_index" : "index_name", "_id" : "2" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "index_name", "_id" : "1" } }

总结

掌握 Elasticsearch 的文档操作对于有效地使用这个强大的搜索和分析工具至关重要。本文通过详细解析添加、检索、更新、删除以及批量处理文档的方法,为开发者提供了一个实用的参考。希望这些内容能帮助你在实际项目中更好地利用 Elasticsearch。

相关推荐
Elasticsearch14 小时前
需要知道某个同义词是否实际匹配了你的 Elasticsearch 查询吗?
elasticsearch
SelectDB1 天前
易车 × Apache Doris:构建湖仓一体新架构,加速 AI 业务融合实践
大数据·agent·mcp
武子康2 天前
大数据-241 离线数仓 - 实战:电商核心交易数据模型与 MySQL 源表设计(订单/商品/品类/店铺/支付)
大数据·后端·mysql
IvanCodes2 天前
一、消息队列理论基础与Kafka架构价值解析
大数据·后端·kafka
武子康3 天前
大数据-240 离线数仓 - 广告业务 Hive ADS 实战:DataX 将 HDFS 分区表导出到 MySQL
大数据·后端·apache hive
洛森唛3 天前
ElasticSearch查询语句Query String详解:从入门到精通
后端·elasticsearch
字节跳动数据平台3 天前
5000 字技术向拆解 | 火山引擎多模态数据湖如何释放模思智能的算法生产力
大数据
武子康4 天前
大数据-239 离线数仓 - 广告业务实战:Flume 导入日志到 HDFS,并完成 Hive ODS/DWD 分层加载
大数据·后端·apache hive
洛森唛4 天前
Elasticsearch DSL 查询语法大全:从入门到精通
后端·elasticsearch
字节跳动数据平台4 天前
代码量减少 70%、GPU 利用率达 95%:火山引擎多模态数据湖如何释放模思智能的算法生产力
大数据