在 Elasticsearch (ES) 中,由于其分布式和异步写入的特性,不支持传统关系型数据库的 ACID 事务和悲观锁(Row-level locking)。ES 采用 乐观并发控制(Optimistic Concurrency Control, OCC) 机制,通过版本号(Versioning)来解决并发写入冲突问题。 以下是解决并发冲突的三种主要方案,分别适用于不同的场景: --- 1. 使用 和 (推荐,ES 6.7+ / 7.x+ 标准做法) 在旧版本的 ES 中,我们直接使用 字段。但在现代 ES 版本中,为了更好地处理主分片切换等故障恢复场景,官方推荐使用 Sequence Number () 和 Primary Term () 配合使用来实现乐观锁。 原理: 1. 读(Read): 先读取文档,获取当前的 和 。 2. 写(Write): 在更新请求中带上刚才读取到的这两个参数。 3. 校验: ES 会比较请求中的参数与当前文档的实际参数。只有当两者完全一致时,写入才成功;否则抛出 。 操作步骤示例: 第一步:读取文档 响应: 第二步:带条件更新 假设我们要把...