2016-09-07 7 views
1

Посылаю delete и index запросы elasticsearch навалом (пример выполнен с 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 после этого (потому что заказ не будет уважаться по той или иной причине)?

ответ

2

Операция delete в этом случае бесполезна, если вы просто документируете документ с тем же идентификатором, он автоматически и неявно удалит/заменит предыдущий документ с тем же идентификатором.

Таким образом, если документ с ID = 1 уже существует, просто отправив команду ниже будет заменить его (читать удалить и повторно указательным его)

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

Правда, мой пример упрощен. На самом деле, у меня уже есть ES, скажем, 4 документа (с идентификаторами 1, 2, 3, 4) и их нужно сначала удалить, а затем переиндексировать подмножество этих документов (например, id 2 и 4). Вот почему я хочу знать, будет ли последовательность операций сначала очищать все четыре документа, а затем переиндексации следующих двух. – WoJ

+1

Да, порядок выполнения гарантирован. В противном случае это был бы кошмар условий гонки. – Val

+0

@ Вал, я не мог найти этот сценарий в эластичной документации. Откуда вы знаете, что заказ сохранен? –

0

По упругим Участник Команды:

Elasticsearch распространяется и одновременно. Мы не гарантируем, что запросы выполняются в том порядке, в котором они получены.

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

+1

Спасибо. Они обсуждают случай, когда две операции '_bulk' поступают последовательно. Моя проблема заключалась в нескольких операциях в рамках одного запроса '_bulk'. – WoJ

Смежные вопросы