У Elasticsearch нет параметра "согласованность чтения" (например, Cassandra). Но у него есть " согласование записи" и " читать предпочтение".
В документации говорится о Write Consistency
Консистенция записи
Чтобы предотвратить запись записей на "неправильной" стороне сетевого раздела, по умолчанию операции индекса работают только при наличии доступных кворумов ( > replicas/2 + 1) активных осколков. Это значение по умолчанию можно переопределить на основе node -by- node, используя параметр action.write_consistency. Чтобы изменить это поведение для каждой операции, можно использовать параметр запроса согласования.Допустимые значения последовательности записи: одно, кворум и все.
Обратите внимание, что в случае, когда количество реплик равно 1 (всего 2 копии данных), тогда поведение по умолчанию должно быть успешным, если 1 копия (первичная) может выполнить запись.
Операция индекса возвращается только после того, как все активные осколки в группе репликации проиндексировали документ (синхронизация).
Мой вопрос касается последнего абзаца:
Операция индекса возвращается только после того, как все активные осколки в группе репликации проиндексировали документ (синхронизация).
Если write_consistency=quorum
(по умолчанию), и все осколки живут (нет node сбоев, нет сетевого раздела), то:
1) Возвращает ли операция индекса как только кворум
осколки закончили индексирование? (хотя все осколки активны/активны)
2) Или возвращается операция индекса, когда все живые/активные осколки закончили индексирование? (т.е. кворум рассматривается только в случае сбоев/тайм-аутов)
В первом случае чтение может быть последовательным (может получить устаревшие данные), запись выполняется быстрее. Во втором случае - чтение согласовано (пока нет сетевых разделов), запись медленнее (поскольку он ожидает более медленный осколок / node).
Кто-нибудь знает, как это работает?
Еще одна вещь, о которой мне интересно - почему значение по умолчанию для параметра preference '(в запросе get/search) есть randomized
но не _local
(что, должно быть, было более эффективным, я полагаю)