Elasticsearch更数据时报VersionConflictEngineException的解决办法

原因分析

es更新数据时偶尔会报VersionConflictEngineException,经过分析是因为我们的系统存在多个应用同时更新数据的场景。es是乐观锁数据更新,通过版本号控制。而我们的数据更新场景为部分数据更新,es会进行数据反查然后进行更新,反查和更新之间存在其他线程更新数据的情况,因此当前数据版本号和反查得到的版本号不一致,因此抛出异常

解决方案 :

request.setRetryOnConflict(10); //版本号冲突时会重试10次

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐