seqNo新建文档时值特别大,且并发修改时大量VersionConflicEngineException
Elasticsearch | 作者 SnowFlakeLeaf | 发布于2023年06月16日 | 阅读数:3029
请教各位,7.10版本下,我们线上即时是的if_seq_no的值都特别大,并且并发修改有大量的VersionConflicEngineException异常提示传入的seqNo和现有的不符。我们在请求中并未附带if_seq_no和if_primary_term,请问if_seq_no的值是es的server端自生成的吗?这个生成规则又是什么呢,源码里可能是我找错地方了一直没有看到这一点是在哪生成的,只发现Index和Update时会先查一次现有的seqNo值,感激不尽
2 个回复
Charele - Cisco4321
赞同来自: charlesfang 、SnowFlakeLeaf
作为这个分片上一个操作的唯一序列号
每次分片上有增加或修改或删除操作时,都会 +1,
这个_seq_no值记入对应的文档,所以你在GET时会看到
VersionConflicEngineException和_version,_seq_no,_primary_term都有关系,
贴出报错才有可能知道原因在哪
Charele - Cisco4321
赞同来自: SnowFlakeLeaf
你应该贴出完整的报错栈才能看出是什么问题
其中一个原因就是跟“版本值”有关,文档变动前会找出这个文档对应的版本,
和版本中的数值比较,如果不同,就会报错