我正在向弹性搜索批量发送delete
和index
个请求(示例已调整为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();
(因为订单不会因某种原因而受到尊重)?
答案 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