2017-01-25 4 views
1

У меня есть кластер Elasticsearch из 10 узлов. При подключении к кластеру через API Java я подключаюсь только к главному узлу.Соединение кластера Elasticsearch через API Java при сбое главного узла

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY) 
     .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("masterNode"), 9300)); 

Если главный узел не работает, будет ли моя программа автоматически подключаться к следующему главному узлу? Что делать, если я должен перезапустить программу Java после того, как исходный главный узел завершится с ошибкой?

ответ

0

Для TransportClient клиента, есть сопение установка для клиента:

  1. client.transport.sniff режим является ложным, клиент только попытаться подключить сконфигурированные IPs, as:

    addTransportAddress (новый InetSocketTransportAddress (InetAddress.getByName ("masterNode"), 9300));

  2. client.transport.sniff режим является истинный, клиент будет, во-первых, чтобы подключиться к сконфигурированных IP-адресов, а статистика API, чтобы обнаружить узлы кластера доступны данные для динамического добавления нового хосты и удалить старые. (Обратите внимание: если ваш кластер с вашим клиентским приложением имеет другую сеть, будет проблема подключения к узлу данных кластера):

    Настройки settings = Settings.settingsBuilder() .put ("client.transport.sniff", true) .build(); TransportClient client = новый PreBuiltTransportClient (настройки);

Так как ваш вопрос, когда нюхать настройки является истинным, и они находятся в той же сети, подключенное узел не удалось, он по-прежнему может подключиться к кластера.

Ссылка: https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.0/transport-client.html

+0

Что такое название 'sniff' который я параметры настройки по положу здесь:..' Настройка Настройки = Settings.builder() положат() построить(); ' – khateeb

+0

Хорошего вопроса, я добавит пример использования «sniff». – chengpohi

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

  • Нет связанных вопросов^_^