5

У меня есть простой код elasticsearch в Java, как это:Почему мой elasticsearch не смог построить transportclient в JAVA API?

public class TryElastic { 

public static void main(String[] args) throws UnknownHostException { 

    Map<String, Object> json = new HashMap<String, Object>(); 
    json.put("user","kimchy"); 
    json.put("postDate",new Date()); 
    json.put("message","trying out Elasticsearch"); 

    try { 
     Settings settings = Settings.settingsBuilder() 
      .put("cluster.name", "elasticsearch") 
      .put("client.transport.sniff", true).build(); 

     TransportClient client = TransportClient.builder().settings(settings).build(); 
     //client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300)); 
    } catch (NoNodeAvailableException e) { 
     System.out.println(e.toString()); 
    } 

    System.out.println("test"); 
} 

}

Это очень простой, но я получил сообщение об ошибке в следующей строке:

TransportClient client = TransportClient.builder().settings(settings).build(); 

Это отображение сообщения об ошибке например:

Exception in thread "main" java.lang.NullPointerException 
at java.io.Reader.<init>(Reader.java:78) 
at java.io.InputStreamReader.<init>(InputStreamReader.java:113) 
at org.elasticsearch.node.internal.InternalSettingsPreparer.randomNodeName(InternalSettingsPreparer.java:198) 
at org.elasticsearch.node.internal.InternalSettingsPreparer.finalizeSettings(InternalSettingsPreparer.java:177) 
at org.elasticsearch.node.internal.InternalSettingsPreparer.prepareSettings(InternalSettingsPreparer.java:64) 
at org.elasticsearch.client.transport.TransportClient$Builder.build(TransportClient.java:119) 
at TryElastic.main(TryElastic.java:64) 

Итак, можете ли вы дать мне gestion, я искал решение, и я не могу этого найти. Есть ли какая-то конфигурация, которую я должен реализовать? Мой сервер elasticsearch работает правильно, он может выполнять индекс и получать запросы из командной строки. Спасибо ...

+0

Какую версию ES вы используете? У вас есть файл с именем 'names.txt' в вашей папке' 'config'? Можете ли вы показать, как вы запускаете процесс ES-сервера? Простым способом исправить это является установка свойства 'node.name' в файле конфигурации' elasticsearch.yml'. – Val

ответ

2

Этот код работает для меня. Это проблема с версией. По умолчанию порт TransportClient является 9300 и код не компилируется с Elasticsearch 2.0

Используйте этот:

Настройки Настройки = Settings.settingsBuilder() .Put ("cluster.name", ClusterName) .build(); .

клиент Client = TransportClient.builder() настройки (настройки) .build() .addTransportAddress (новый InetSocketTransportAddress (новый InetSocketAddress ("127.0.0.1", 9300)));

См: Here's the link

Смежные вопросы