2016-09-12 1 views
0

Это первый раз, когда я работаю с Jest для Elasticsearch. Я использую следующий код:Jest: ProtocolException: целевой хост не указан

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(); 
    } 

Я пытаюсь создать индекс:

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

, но я столкнулся следующее сообщение об ошибке:

org.apache.http.ProtocolException: Target host is not specified 
сервис

Мой Elasticsearch работает на всех серверов.

Это мой connectionUrls список изобр: [1.2.3.4, 5.6.7.8, 10.11.12.13]

Что я делаю неправильно здесь?

ответ

0

Что я делаю не так было, я только предоставление IP-адреса серверов, но он должен быть полный адрес, как:

HTTP: // 1.2.3.4:9200

поэтому я изменил линия для добавления соединенияUrls к connectionUrls.add("http://"+String.valueOf(pair.getValue())+":9200");