2016-02-21 31 views
5

Tôi có một mã đơn giản của elasticsearch trong Java như thế này:Tại sao elasticsearch của tôi không thể xây dựng transportclient trong API JAVA?

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

}

Nó rất đơn giản nhưng tôi có một lỗi trong dòng sau:

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

Nó hiển thị thông báo lỗi như thế này:

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) 

Vì vậy, bạn có thể cho tôi sug không gestion, tôi đã tìm kiếm giải pháp, và tôi không thể tìm thấy điều đó. Có cấu hình nào mà tôi đã triển khai không? Máy chủ elasticsearch của tôi đã chạy đúng cách, nó có thể thực hiện chỉ mục và nhận các truy vấn từ dấu nhắc lệnh. Cảm ơn ...

+0

Bạn đang sử dụng phiên bản ES nào? Bạn có xảy ra một tệp có tên 'names.txt' trong thư mục ES' config' của bạn không? Bạn có thể cho biết cách bạn bắt đầu quá trình máy chủ ES không? Một cách đơn giản để sửa lỗi này là đặt thuộc tính 'node.name' trong tệp cấu hình' elasticsearch.yml' của bạn. – Val

Trả lời

2

Mã này phù hợp với tôi. Đây là vấn đề phiên bản. Mặc định cảng TransportClient là 9300 và mã không biên dịch với Elasticsearch 2.0

Sử dụng này:

thiết lập Cài đặt = Settings.settingsBuilder() .put ("cluster.name", CLUSTERNAME) .build();

Client client = TransportClient.builder() .cài đặt (cài đặt) .build() .addTransportAddress (mới InetSocketTransportAddress (new InetSocketAddress ("127.0.0.1", 9300)));

Tham khảo: Here's the link

Các vấn đề liên quan