2016-06-24 5 views
0

Предположим, у меня есть служба, и elasticsearch работает на нескольких хостах. Если я гарантирую, что каждый хост содержит полный индекс elasticsearch (с помощью replicas> = numberOfHosts-1), можно ли убедиться, что вызов службы на конкретном хосте выполняется только в индексе того же хоста (т. Е. Нет вызовов elasticsearch сделаны через хосты)?Можем ли мы обеспечить локальный поиск elasticsearch?

ответ

1

Используя shard allocation filtering, вы можете гарантировать, что осколки индекса будут находиться только на одном хосте. Обратите внимание, однако, что, если это произойдет, если вы запустите узел, вы потеряете данные.

PUT test/_settings 
{ 
    "index.routing.allocation.include._ip": "192.168.1.1", 
    "index.routing.allocation.exclude._ip": "192.168.1.2,192.168.1.3" 
} 

В результате, если вы запрашиваете индекс test непосредственно на 192.168.1.1 вы можете быть уверены, что не будет никакой болтовни между 192.168.1.1 и узлами для выполнения вашего запроса.

Если вы отправляете свой запрос на клиентский узел или другой узел балансировки нагрузки, ваш запрос, как гарантируется, будет перенаправлен непосредственно на 192.168.1.1, поскольку кластер будет знать, что индекс test доступен только на этом хосте.

Неправильно использовать локализацию индекса на одном хосте, как если бы этот хост терпит неудачу или поврежден, вы гарантированно потеряете данные.

Смежные вопросы