ES处理冲突

来源:互联网 发布:高成本网络大电影 编辑:程序博客网 时间:2024/06/06 05:53

1、什么是文档

对象JSON序列化后是一个文档

2、如何唯一确定一个文档

_index + _type + _idid可以由外部指定,也可以由ES自动生成

3、ES更新文档流程

先GET原始文档,然后修改,最后将整个文档进行再次索引处理

4、ES中_version变更

对应于增删查改操作,ES中索引、put和删除操作时,无论文档有没有变化,它的_version都会增加

5、如何处理修改冲突

乐观并发控制:所有更新或删除文档的API都支持version参数,从而实现乐观并发控制使用场景1:ES作为持久化层问题描述:不同进程同时对某一个文档进行修改解决方案:先Get操作获取了_version,在修改时传入之前获取得version参数,只有当前文档version与指定version参数相等时才执行更新,否则提示失败使用场景2:MySQL作为持久化层,ES只是用于搜索问题描述:当主库(MySQL)中数据发生更改,需要更新ES,可能存在并发修改?解决方案:ES比较外部version是否大于文档_version,才能更新成功,例如PUT  /website/blog/123?version=5&version_type=external使用场景3:无关顺序的更新(局部更新:新增字段或改变字段值)问题描述:对于很多的局部更新来说,文档有没有发生变化实际上不重要解决方案:设定retry_on_conflict,规定自动完成这项请求的次数
原创粉丝点击