2
votes

Créer java RestHighLevelClient en mode cluster élastique

" host2 "," host3 ", comment créer le reste du client de haut niveau en mode cluster?

Merci


0 commentaires

3 Réponses :


0
votes
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.

0 commentaires

0
votes

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"


0 commentaires

0
votes

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:


0 commentaires