#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 да.