Merci
3 Réponses :
RestHighLevelClient client = new RestHighLevelClient( RestClient.builder( new HttpHost("host1", 9200, "http"), new HttpHost("host2", 9200, "http"), new HttpHost("host2", 9200, "http") ) ); As the doc it looks like you were referencing states, RestClient.builder accepts an array of HttpHosts to connect to. The client (which under the hood is the ES low-level REST client) will round-robin requests to these hosts. See also the Javadoc.
Selon le Elasticsearch docs vous pouvez passer plusieurs hôtes Elasticsearch dans RestClient.builder ()
.
La meilleure solution est de charger les hôtes Elasticsearch à partir de la configuration ( application. conf
dans le cas d'une application basée sur Scala) au lieu de le coder en dur dans la base de code.
Voici la solution basée sur Scala utilisant Java Varargs (: _ *)
.
application.conf
import collection.JavaConverters._ import com.typesafe.config.ConfigFactory import org.apache.http.HttpHost import org.elasticsearch.client.{RestClient, RestHighLevelClient} val config = ConfigFactory.load() val port = config.getInt(ES_PORT) val scheme = config.getString(ES_SCHEME) val es_hosts = config.getStringList(ES_HOSTS).asScala val httpHosts = es_hosts.map(host => new HttpHost(host, port, scheme)) val low_level_client = RestClient.builder(httpHosts:_*) val high_level_client: RestHighLevelClient = new RestHighLevelClient(low_level_client)
Extrait de code
es_hosts = ["x.x.x.x","x.x.x.x","x.x.x.x"] // You can even use service-name/service-discovery es_port = 9200 es_scheme = "http"
Pour créer un client REST de haut niveau en utilisant plusieurs hôtes, vous pouvez faire quelque chose comme suit:
String[] esHosts = new String[]{"node1-example.com:9200", "node2-example.com:9200", "node3-example.com:9200"}; final ClientConfiguration clientConfiguration = ClientConfiguration.builder() .connectedTo(esHosts) .build(); RestHighLevelClient restClient = RestClients.create(clientConfiguration).rest(); // Hostnames used for building client can be verified as following List<Node> nodes = restClient.getLowLevelClient().getNodes(); nodes.forEach(node -> System.out.println(node.toString()));
Références:
ClientConfigurationBuilder