You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Elasticsearch中插入两个相同id的文档会发生什么?

Elasticsearch 同索引插入已存在ID文档的处理逻辑

默认情况下,使用标准写入接口提交ID已存在的文档,不会忽略新内容,会直接全量覆盖原有ID对应的文档,底层逻辑为标记删除旧文档、写入新文档,同时文档的版本号会自动+1,旧文档的所有字段都会被新提交的字段完全替换。

不同的写入参数/接口会对应不同的处理逻辑,具体区别如下:

  • 常规index写入(无特殊参数):如执行 PUT /<索引名>/_doc/<已有ID> {"字段1":"值1"},直接全量覆盖旧文档,旧文档未在新内容中声明的字段会丢失。
  • 要求ID不存在才写入:添加op_type=create参数,或直接使用_create接口,如执行 PUT /<索引名>/_create/<已有ID> {"字段1":"值1"},此时如果ID已存在,ES会返回409冲突错误,不会修改原有文档,也不会写入新内容。
  • 仅更新部分字段:使用_update接口,如执行 POST /<索引名>/_update/<已有ID> {"doc":{"字段1":"值1"}},此时只会更新声明的字段,原有文档的其他字段会保留,不会被覆盖。

补充说明:如果写入时指定了版本号做乐观锁控制,还会先校验版本号是否匹配,版本号不匹配时会直接返回冲突,不会执行任何写入/覆盖操作。

内容的提问来源于stack exchange,提问作者TeimasTeimoso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:06:02