У меня есть два узла ES (в кластере) в разных местах, и я бы хотел, чтобы мое приложение использовало ближайший, чтобы избежать задержки в сети.
Я настроил Информация о принудительном распределении осколков , чтобы сделать каждый из этих узлов "независимым" (содержащим первичный осколок или реплику другого первичного, но никогда не обоих), как
cluster.routing.allocation.awareness.force.my_attr.values: my_attr_val1, my_attr_val2
cluster.routing.allocation.awareness.attributes: my_attr
Теперь я знаю, что могу заставить свой запрос выполняться на определенном узле, добавив к запросу Предпочтение , например:
_only_nodes:my_attr:my_attr_val1
но, насколько я понимаю, он потерпит неудачу в случае сбоя узла - поэтому я не хочу этого делать.
Что я могу сделать, это установить
_prefer_nodes:my_attr:my_attr_val1
или просто ничего не делать и позволить ES делать свою работу. Вопрос в том - выбирает ли ES «лучший» (скажем, ближайший) узел для запроса, или он просто выбирает случайный ? Как Elasticsearch определяет узел для запроса?
Версия моего ES - 5.5.0