找到问题的解决办法了么?

es的bulk操做,相同的id,可以保证写入数据的顺序性吗?

Elasticsearch | 作者 陈水鱼 | 发布于2022年10月23日 | 阅读数:2840

在一个bulk,提交里面,如果id相同的两个upsert,排在json前面的操作,是不是最先执行?
或者说有相同id的几个操作,upsert,delete,upsert三个操作,会不会依次执行
 
了解过一个bulk操作是不保证顺序的,但是同document的时候,应该有version来保证顺序性,是否这三个操作就会依次执行?
已邀请:

God_lockin

赞同来自:

填了version可能可以保证,bulk提交内部会乱序执行的

Charele - Cisco4321

赞同来自:

bulk在操作的时候,会把各个操作分成byShard的形式,如下:

分片1 ---> 操作11,操作12,操作13,,,
分片2 ---> 操作21,操作22,,,
,,,
然后把请求发到对应分片(就是主分片所在的节点)去执行。
如果是同一分片,操作按你的写法是依次执行的。
这个很容易验证。
 
另外,version好像是用来控制并发的,并不是这里保证顺序。
 
以前没用过这个,我试了一下,好像会报错,用不了???
 "reason" : "Validation Failed: 1: internal versioning can not be used for optimistic concurrency control. Please use `if_seq_no` and `if_primary_term` instead;"

陈水鱼 - 码农

赞同来自:

感谢,我也再研究一下

要回复问题请先登录注册