OpenSearch Bulk写入自定义_id文档能否去重?版本规则是什么?
OpenSearch bulk写入自定义_id去重相关问题解答
自定义_id能否实现重跑去重
可以。
OpenSearch的文档唯一标识就是索引下的_id字段,不管是单条写入还是bulk批量写入,只要你为同一条业务数据固定分配同一个自定义_id,重复提交写入请求时不会生成重复的文档记录,天然满足任务失败重跑的幂等要求,不会出现重复数据问题。
同_id写入时旧文档的处理逻辑
默认配置下不会保留所有历史版本:
- 写入同
_id的新文档时,旧版本文档会被立即标记为墓碑(删除状态),不会被任何查询请求命中 - 后续索引执行段合并操作时,被标记删除的旧文档会被物理清理,不会长期占用存储资源
- 只有你主动配置了版本控制规则(比如写入时指定
version_type参数、调整索引的版本保留策略),OpenSearch才会按配置留存指定数量的历史版本,默认写入场景不会触发版本留存逻辑。
实操提示:如果你的业务场景中存在数据更新,担心重跑历史任务把已经更新的新文档覆盖,可以在bulk写入时带上
version_type=external参数,用业务侧的版本标识(比如数据更新时间戳、业务版本号)做校验,只有当写入文档的版本号高于索引内存量同_id文档的版本号时,才会执行更新操作,避免旧数据冲掉新内容。
内容的提问来源于stack exchange,提问作者Jochen
相关产品推荐
相关产品推荐

