2016-02-21 30 views
5

我elasticsearch的Java中的簡單代碼:爲什麼我的elasticsearch無法在JAVA API中構建transportclient?

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?你是否碰巧在你的ES'config'文件夾中有一個名爲'names.txt'的文件?你能展示你如何啓動ES服務器進程嗎?解決這個問題的一個簡單方法是在你的'elasticsearch.yml'配置文件中設置'node.name'屬性。 – Val

回答

2

此代碼適合我。這是版本問題。 TransportClient的默認端口是9300和代碼不與Elasticsearch編譯2.0

使用此

設置設置= Settings.settingsBuilder() 。把( 「cluster.name」,CLUSTERNAME).build ();客戶端客戶端= TransportClient.builder()。設置(設置).build() .addTransportAddress(new InetSocketTransportAddress(new InetSocketAddress(「127.0.0.1」,9300)));

請參考:Here's the link

相關問題