Эластичный поиск 6.4 выполняет поиск реплики, которая не синхронизирована / устарела? - PullRequest
0 голосов
/ 24 октября 2018

Мы создаем приложение, в котором нам нужна согласованность по доступности (в ES store).Под последовательностью я подразумеваю, когда мы выполняем операцию поиска, результат должен содержать все данные, которые были проиндексированы перед этим поиском.Если в результате поиска содержатся частичные / устаревшие данные, приложение должно выдать ошибку.

В документации эластичного поиска в документации указано -

При сбое осколкачтобы ответить на запрос на чтение, координирующий узел выберет другую копию из той же группы репликации и вместо этого отправит запрос поиска уровня сегмента в эту копию.Повторяющиеся сбои могут привести к отсутствию доступных копий осколков.В некоторых случаях, например _search, Elasticsearch предпочитает отвечать быстро, хотя и с частичными результатами, а не ждать решения проблемы (частичные результаты указаны в заголовке _shards ответа).

В настоящее время мы предприняли следующие шаги -

Выпустим обновление после индексации.Приносит ли обновление синхронизацию всех реплик с первичными?Мы также проверяем ответ на запрос на обновление, чтобы убедиться, что запрос не был отклонен ни для какого сегмента.Мы продолжим только в том случае, если ответ на обновление будет _shards {_failed: 0} в ответе. Когда поиск будет выполнен, мы проверяем ответ, чтобы убедиться, что в нем нет неисправных шардов.Проверяя _shards {_failed: 0}.

У меня есть следующие вопросы -

Вышеуказанные шаги гарантируют согласованность только в том случае, если ES всегда считывает данные из синхронной реплики.Если ответ исходит от несинхронизированной реплики (устаревшей), есть ли способ узнать это.Или поиск всегда происходит по реплике, которая синхронизирована. Должны ли мы установить 'wait_for_active_shards' на 'все'.Или это перебор, и вышеуказанных шагов достаточно для обеспечения согласованности.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...