批量更新是否保证了运营顺序?

时间:2016-09-07 11:10:23

标签: elasticsearch

我正在向弹性搜索批量发送deleteindex个请求(示例已调整为from the docs):

{ "delete" : { "_index" : "test", "_type" : "type1", "_id" : "1" } }
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } }
{ "field1" : "value1" }

上述顺序的目的是首先delete一个包含_id=1的可能文档,然后index一个具有相同_id=1的新文档。

是否保证了操作的顺序?换句话说,对于上面的示例,我可以确定delete之后index不会触及文档MonetaryAmount monetaryAmount = Money.of(100.20, usd); CurrencyUnit currency = monetaryAmount.getCurrency(); NumberValue numberValue = monetaryAmount.getNumber();   int value= numberValue.intValue(); (因为订单不会因某种原因而受到尊重)?

2 个答案:

答案 0 :(得分:2)

delete操作在此方案中无用,如果您只是index具有相同ID的文档,它将自动并隐式删除/替换具有相同ID的先前文档。

因此,如果ID = 1的文档已经存在,只需发送以下命令将替换它(读取删除并重新索引)

{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } }
{ "field1" : "value1" }

答案 1 :(得分:1)

根据弹性团队成员的说法:

  

Elasticsearch是分布式和并发的。我们不保证请求按照收到的顺序执行。

https://discuss.elastic.co/t/are-bulk-index-operations-serialized/83770/6