elasticsearch _update_by_query с конфликтами = продолжить

#elasticsearch

#elasticsearch

Вопрос:

Когда я использовал опцию _update_by_query без конфликтов, это вызвало ошибку version_conflict_engine_exception.

Читая этот документ, я обнаружил, что conflicts=продолжить можно передать вместе с запросом, чтобы избежать этой ошибки.

Хотя меня немного смущает формулировка в документации. Я понимаю, что как только указано conflicts=продолжить, оно не будет прервано между ними при возникновении конфликта версий.

Но обновит ли он те документы, в которых произошел конфликт, или он не обновит эти документы и обновит только документ, в котором не было конфликтов.

Примечание: Я использую elasticsearch 5.6

Ответ №1:

конфликт версий возникает, когда документ имеет несоответствие в идентификаторе, отображении или типе полей. update_by_query остановится, когда в одном документе возникнет конфликт, и обновление не будет доступно для остальных документов в этом индексе и следующих индексах. (конечно, некоторые документы были обновлены) если вы используете conflict= продолжить, он не обновит только документы, в которых есть конфликт (просто пропустите этот документ, а не весь индекс).

Комментарии:

1. Я немного исправил вопрос. Я имел в виду doc в последних двух предложениях вместо index. Вы имеете в виду, что документы с конфликтом не будут обновлены (пропущены) с помощью _update_by_query, но остальные документы будут обновлены?

2. @RohanPujari да.