2016-04-13 2 views
2

mit i diesem Code bin mit meinem lokalen elastischen ServerWie Remote Elasticsearch Server, der UP und gestartet Elasticsearch Java-Client

 String url = "localhost:9200"; 
     String encodedUrl = URLEncoder.encode(url, "UTF-8"); 
     Node node = nodeBuilder().settings(
       Settings.settingsBuilder() 
         .put("http.enabled", false) 
         .put("path.home", encodedUrl) 
     ) 
       .client(true) 
       .data(false) 
       .node(); 
     return node.client(); 

Ich verwende diesen Code zu verbinden Remote-elastischen Server

verbinden
 // Transport client way 


     Settings settings = Settings.settingsBuilder() 
       .put("cluster.name", "Test") // remote elastic cluster name which is different in my case 
       .build(); 
     Client client = TransportClient.builder().settings(settings).build() 
       .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("**.**.***.**"), 9259)); // my remote elastic server IP and its port 
     return client; 


     // And my other way of connecting (Node Client way)is 


     String url = "**.**.***.**:9259"; 

     String encodedUrl = URLEncoder.encode(url, "UTF-8"); 
     Node node = nodeBuilder().settings(
       Settings.settingsBuilder() 
         .put("http.enabled", false) 
         .put("path.home", encodedUrl) 
         .put("discovery.zen.ping.unicast.hosts", "52.74.***.**") 
         .put("cluster.name", "Test") 
     ) 
       .client(true) 
       .data(false) 
       .node(); 
     return node.client(); 

ich bin in der Lage meine lokalen elastischen Server zu verbinden, aber ich bin nicht in der Lage zu entfernten elastischen Server zu verbinden, gab es immer einige Fehler kommen

NodeNotConnecte dException:

SendRequestTransportException

ReceiveTimeoutTransportException

NodeNotAvailableException:

etc ...

Kann mir jemand helfen, herauszufinden, wie auf Remote-elastischen Server mit Java zu verbinden, wie ich bin Entwicklung von Web-Anwendungen im Dropwizard-Framework und müssen Daten von diesen elastischen API-Servern erhalten

während einer Client-Verbindung mit Remote-ES-Server zur Gründung dieses Ding

INFO [2016-04-13 11:23:45,826] org.elasticsearch.node: [Thunderbolt] version[2.2.0], pid[4720], build[8ff36d1/2016-01-27T13:32:39Z] 
INFO [2016-04-13 11:23:45,826] org.elasticsearch.node: [Thunderbolt] initializing ... 
INFO [2016-04-13 11:23:45,826] org.elasticsearch.plugins: [Thunderbolt] modules [], plugins [], sites [] 
INFO [2016-04-13 11:23:46,039] org.elasticsearch.node: [Thunderbolt] initialized 
INFO [2016-04-13 11:23:46,039] org.elasticsearch.node: [Thunderbolt] starting ... 
INFO [2016-04-13 11:23:46,732] org.elasticsearch.transport: [Thunderbolt] publish_address {127.0.0.1:9302}, bound_addresses {127.0.0.1:9302}, {[::1]:9302} 
INFO [2016-04-13 11:23:46,732] org.elasticsearch.discovery: [Thunderbolt] Test/eZo2PDQuTcWdd3zsLzVm-w 
WARN [2016-04-13 11:24:16,748] org.elasticsearch.discovery: [Thunderbolt] waited for 30s and no initial state was set by the discovery 
INFO [2016-04-13 11:24:16,748] org.elasticsearch.node: [Thunderbolt] started 
+1

Welche Version von ES sind Sie? – Val

+0

Seine 2.2.1 auf Windows – Tinku

Antwort

2

Da ES 2.x geschieht, wird der ES-Server only bind to localhost by default, die es bedeutet, ist nicht von außen erreichbar.

So auf der Fernbedienung ES-Server, stellen Sie sicher, dass Ihre elasticsearch.yml Konfigurationsdatei die folgenden network.host Einstellung mit einer öffentlich erreichbaren IP-Adresse enthält:

network.host: a.b.c.d 

wo a.b.c.d ist die IP-Adresse des Remote-Servers.

Stellen Sie sicher, dass Sie ES neu starten, nachdem Sie die Änderung vorgenommen haben.

+0

ya Ich kann die Daten von Remote-ES-Server in Postman und Chrom, aber ich kann nicht in meinem Java-Code binden, wie ich es mit meinem lokalen Server – Tinku

+0

Was haben Sie als 'network.host' Einstellung und was verwenden Sie in Ihrem Client-Code? – Val

+0

Es ist die IP-Adresse, die 52.74. ***. ** konfiguriert ist und im Client versuche ich, die Daten zu erhalten, die indexiert wird – Tinku

0

Die Antwort, die ich herausgefunden ist

Settings settings = Settings.settingsBuilder() 
      .put("cluster.name", "Test") 
      .build(); 
Client client = TransportClient.builder().settings(settings).build() 
      .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("**.**.***.**"), 9300)); // my remote elastic server IP and its port 
return client;