实战指南:如何使用 REST API 进行 Elasticsearch 数据的插入和更新

张开发
2026/4/20 10:04:21 15 分钟阅读

分享文章

实战指南:如何使用 REST API 进行 Elasticsearch 数据的插入和更新
实战指南如何使用 REST API 进行 Elasticsearch 数据的插入和更新一、前言REST API 插入/更新总览插入 更新 核心流程图二、基础准备操作约定与环境2.1 约定操作格式固定2.2 索引准备提前创建三、REST API单条数据插入新增文档3.1 方式一指定文档ID插入PUT3.2 方式二自动生成ID插入POST四、REST API批量数据插入bulk 高性能定义批量插入五、REST API数据全量更新覆盖式定义全量更新六、REST API数据局部更新只改指定字段最常用定义局部更新七、REST APIupsert 操作存在则更新不存在则插入定义upsert 智能写入八、REST API并发控制乐观锁 version 版本定义乐观锁九、插入 更新请求方式对比总结表十、插入 更新核心注意事项避坑十一、总结The Begin点点关注收藏不迷路一、前言REST API 插入/更新总览在 Elasticsearch 中所有数据的写入、修改操作全部通过 REST API 完成基于 HTTP 协议使用PUT/POST请求以 JSON 格式传输数据。插入和更新是 ES 最基础、最常用的操作本文从单条插入、批量插入、全量更新、局部更新、乐观锁控制五个维度提供可直接复制使用的实战代码。插入 更新 核心流程图插入文档全量更新局部更新构造JSON数据发送PUT/POST请求判断操作类型生成倒排索引覆盖原有文档仅修改指定字段返回成功结果二、基础准备操作约定与环境2.1 约定操作格式固定请求地址http://localhost:9200/索引名/_doc/文档ID数据格式JSON请求类型PUT / POST返回格式JSON 状态结果2.2 索引准备提前创建PUT/product{mappings:{properties:{title:{type:text},price:{type:double},stock:{type:integer},status:{type:keyword}}}}索引名product商品用于后续所有插入/更新示例。三、REST API单条数据插入新增文档3.1 方式一指定文档ID插入PUT手动指定文档ID适合业务ID如商品ID、用户ID。请求方式PUT请求地址http://localhost:9200/product/_doc/1请求体{title:Elasticsearch 实战教程,price:59.9,stock:100,status:on_sale}成功返回{result:created,_id:1}3.2 方式二自动生成ID插入POST不指定IDES自动生成唯一ID适合日志、流水数据。请求方式POST请求地址http://localhost:9200/product/_doc请求体同上成功返回_id: 自动生成字符串四、REST API批量数据插入bulk 高性能定义批量插入一次性插入多条数据减少网络IO性能提升10倍以上企业级开发必用。请求方式POST请求地址http://localhost:9200/product/_bulk请求体注意无逗号两行一条数据{index:{_id:2}}{title:Java 编程思想,price:88.0,stock:200,status:on_sale}{index:{_id:3}}{title:MySQL 从入门到精通,price:39.0,stock:150,status:off_sale}注意bulk 格式严格每行必须换行不能加逗号。五、REST API数据全量更新覆盖式定义全量更新使用PUT重新提交数据覆盖原有全部字段相当于删除重建。适用场景数据完整替换请求方式PUT请求地址http://localhost:9200/product/_doc/1请求体{title:Elasticsearch 实战教程升级版,price:69.9,stock:120,status:on_sale}成功返回result: updated六、REST API数据局部更新只改指定字段最常用定义局部更新使用POST _update接口只修改部分字段不影响其他数据性能最优。请求方式POST请求地址http://localhost:9200/product/_update/1请求体{doc:{price:79.9,stock:130}}特点只更新price和stocktitle、status保持不变。七、REST APIupsert 操作存在则更新不存在则插入定义upsert 智能写入如果文档存在 → 更新如果不存在 → 插入原子操作无并发问题。请求方式POST请求地址http://localhost:9200/product/_update/4请求体{doc:{title:Redis 设计与实现,price:45.0},upsert:true}八、REST API并发控制乐观锁 version 版本定义乐观锁通过版本号version控制并发避免多线程同时修改导致数据错乱。请求方式PUT请求地址http://localhost:9200/product/_doc/1?version1version_typeexternal规则只有提交版本 存储版本时才允许更新。九、插入 更新请求方式对比总结表操作类型请求方式接口地址特点适用场景单条插入指定IDPUT/索引/_doc/ID手动指定ID业务数据商品/用户单条插入自动IDPOST/索引/_docES生成ID日志/流水批量插入POST/索引/_bulk高性能大量数据导入全量更新PUT/索引/_doc/ID覆盖全部字段完整数据替换局部更新POST/索引/_update/ID仅改指定字段常规修改最常用智能写入POST/索引/_update/ID存在更新不存在插入同步数据场景十、插入 更新核心注意事项避坑索引必须提前存在否则自动创建可能导致字段类型错误局部更新必须用 _update且外层必须加docbulk 批量格式严格不能有逗号必须两行一个文档ID 唯一相同ID会覆盖数据相当于更新数据写入近实时写入后1秒内可搜索刷新机制十一、总结使用 Elasticsearch REST API 进行插入和更新非常简单插入PUT指定ID、POST自动ID、POST _bulk批量更新PUT全量覆盖、POST _update局部最优智能操作upsert 自动判断插入/更新企业最佳实践优先使用局部更新批量插入性能最高掌握以上操作即可完成 ES 所有数据写入、更新业务需求。The End点点关注收藏不迷路

更多文章