Как Elasticsearch определяет, какой узел в кластере запрашивать - PullRequest
0 голосов
/ 29 октября 2018

У меня есть два узла 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

1 Ответ

0 голосов
/ 30 октября 2018

Поведение в 5.5, если вы не устанавливаете предпочтение, состоит в том, чтобы направить запрос к выделенным осколкам в циклическом порядке. ES не имеет системы "ближайшего узла".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...