目录
背景
Elasticsearch 是分布式的。当文档创建、更新或删除时, 新版本的文档必须复制到集群中的其他节点。Elasticsearch 也是异步和并发的,这意味着这些复制请求被并行发送,并且到达目的地时也许 顺序是乱的 。 Elasticsearch 提供了版本 _version 功能,实际上和大多数并发场景处理一样,版本号属于乐观锁的应用范畴
当我们 index , GET 和 delete 请求时,我们指出每个文档都有一个 _version (版本)号,当文档被修改时版本号递增。 Elasticsearch 使用这个 _version 号来确保变更以正确顺序得到执行。如果旧版本的文档在新版本之后到达,它可以被忽略,防止乱序问题带来的覆盖
最佳实践
Elasticsearch 版本类型分为:内部版本 和 外部版本
内部版本号上面介绍的是Elasticsearch的,每次都会_version自动加1。
外部版本号的处理方式和内部版本号的处理方式有些不同,是通过业务方指定传入的版本号, Elasticsearch 会检查当前 _version 是否 小于 指定传入的版本号,如果小于,则更新成功,否则更新失败。
在写入索引的时间,ES提供了指定的版本类型和可以传入的版本号
IndexRequest request