2016-09-12 2 views
0

Dies ist das erste Mal, dass ich mit Jest for Elasticsearch arbeite. Ich verwende den folgenden Code ein:Jest: ProtocolException: Zielhost wurde nicht angegeben

public static JestClient getJestClient(ContainerRequestContext crc) { 

      JSONObjeect elasticsearchServers = new JSONObject(); 
      elasticsearchServers.putAll((Map) crc.getProperty("serverProperties")); 
      List<String> connectionUrls = new ArrayList<String>(); 

      Set serverSet = elasticsearchServers.entrySet(); 
      Iterator serverIterator = serverSet.iterator(); 
      while (serverIterator.hasNext()) { 
       Map.Entry pair = (Map.Entry) serverIterator.next(); 
       connectionUrls.add(String.valueOf(pair.getValue())); 
      } 
      return buildJestClient(connectionUrls); 
     } 


    public static JestClient buildJestClient(List<String> connectionUrls) { 
     final Builder builder = new Builder(connectionUrls) 
       .multiThreaded(true); 

     builder.gson(JestRichResult.createGsonWithDateFormat()); 
     HttpClientConfig clientConfig = builder.build(); 

     // Construct a new Jest client according to configuration via factory 
     JestClientFactory factory = new JestClientFactory(); 
     factory.setHttpClientConfig(clientConfig); 
     return factory.getObject(); 
    } 

Ich versuche Index zu erstellen:

CreateIndex createIndex = new CreateIndex.Builder("inde").build(); 
jestClient.execute(createIndex); 

aber ich bin vor den folgenden Fehler:

org.apache.http.ProtocolException: Target host is not specified 

Mein Elasticsearch Dienst auf allen läuft die Server.

Dies ist meine connectionUrls Liste der ips: [1.2.3.4, 5.6.7.8, 10.11.12.13]

Was ich hier falsch mache?

Antwort

0

Was ich tat, falsch war, wurde ich nur die IP-Adresse des Servers bereitstellt, aber es sollte vollständige Adresse wie:

http: // 1.2.3.4:9200

so änderte ich die Zeile zum Hinzufügen von connectionUrls zu connectionUrls.add("http://"+String.valueOf(pair.getValue())+":9200");

Verwandte Themen