У нас есть базовый c экземпляр ES, и я рассматриваю индекс, который имеет только один основной сегмент и один фрагмент реплики.
Выполнение основного запроса c bool, hits.total
поворотов зависеть от того, какой осколок мы ударили. Я получаю последовательно разные числа, указывающие ?preference=_primary
или ?preference=_replica
.
Осколки в некотором смысле различны, потому что с _cat
я вижу:
index shard prirep state docs store ip node
admin_ch-v1 0 r STARTED 3220 295.2mb x.x.x.x JO8tqXw
admin_ch-v1 0 p STARTED 3220 294mb x.x.x.x aCqEzYQ
Однако общий документ количество одинаковое Я также написал скрипт для получения всех документов конкретно от каждого шарда (используя preference=f"_only_nodes:xxx"
) и сравнения их, и, по модулю ошибки в моем скрипте, все идентично.
Это не проблема репликации не в ногу, потому что индекс очень низок для обновлений и количество осколков не изменилось, когда мы тестировали его с интервалом в пару часов.
Я видел этот вопрос , но, похоже, применить к нашему делу.
Итак ... что происходит? Является ли подсчет документов по своей сути ненадежным? Любая ссылка на документацию, где это объясняется?
(также спрашивается здесь )