API клиента Elasticsearch позволяет настроить несколько имен хостов следующим образом, но, к сожалению, они не работают должным образом.
В соответствии с этим LINK ,
TransportClient подключается удаленно к кластеру Elasticsearch с помощью транспортного модуля.Он не присоединяется к кластеру, а просто получает один или несколько начальных транспортных адресов и связывается с ними циклически по каждому действию (хотя большинство действий, вероятно, будут операциями «двух скачков»).
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new TransportAddress(InetAddress.getByName("host1"), 9300))
.addTransportAddress(new TransportAddress(InetAddress.getByName("host2"), 9300));
Что вы можете сделать, возможно, так это реализовать концепцию Spring Boot Profiles , в которой вы можете создать несколько application.properties
.Ниже приведен один из способов достижения этого.
Если у меня есть два разных хоста / окружения, например, dev
и prod
, я бы в конечном итоге создал три файла свойств приложения (два для окружения, одно свойство, в котором указывалось бы, какое окружение вам нужновыбирать).
application-dev.properties
elasticsearch.clustername = mycluster_name
elasticsearch.host = mydev.abc.com <-- Configure the name of host 1
elasticsearch.port = 9300
application-prod.properties
elasticsearch.clustername = mycluster_name_2
elasticsearch.host = myprod.abc.com <-- Configure the name of host 2
elasticsearch.port = 9300
приложение.properties
spring.profiles.active=dev <-- Configure which of the above properties do you want to start application with
Теперь, когда вы запускаете приложение в режиме весенней загрузки, оно в конечном итоге запускает среду dev
.
Обратите внимание, что я предполагаю, что оба эти узла находятся в разных кластерах и не являются частью одного кластера.Причина, по которой я это указываю, заключается в том, что внутренняя библиотекаasticsearch будет продолжать и обновлять фрагменты реплики других узлов, если получит новый / обновленный документ.Находясь в одном кластере, не имеет значения, на какой хост в кластере вы указываете.
Дайте мне знать, если это то, что вы ищете.