简体   繁体   English

为什么我的elasticsearch无法在JAVA API中构建transportclient?

[英]Why my elasticsearch failed to build transportclient in JAVA API?

I have an simple code of elasticsearch in Java like this : 我在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");
}

} }

It's very simple but I got an error in the following line : 这很简单,但我在以下行中出错:

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

It display error message like this : 它显示如下错误消息:

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)

So, can you give me suggestion, I've looking for the solution, and I can't find that. 所以,你能给我一些建议吗,我一直在寻找解决方案,但我找不到。 Is there any configuration that I've to implement? 有没有我要实现的配置? My elasticsearch server have ran correctly, It can perform index and get queries from command prompt. 我的elasticsearch服务器已正确运行,它可以执行索引并从命令提示符获取查询。 Thanks... 谢谢...

This code works for me. 这段代码适合我。 This is the version issue. 这是版本问题。 Default port of TransportClient is 9300 and the code does not compile with Elasticsearch 2.0 TransportClient的默认端口是9300,代码不能使用Elasticsearch 2.0进行编译

Use this : 使用这个

Settings settings = Settings.settingsBuilder() .put("cluster.name", clusterName).build(); 设置设置= Settings.settingsBuilder()。output(“cluster.name”,clusterName).build();

Client client = TransportClient.builder().settings(settings).build() .addTransportAddress(new InetSocketTransportAddress(new InetSocketAddress("127.0.0.1", 9300))); 客户端客户端= TransportClient.builder()。settings(settings).build()。addTransportAddress(new InetSocketTransportAddress(new InetSocketAddress(“127.0.0.1”,9300)));

Refer: Here's the link 参考: 这是链接

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM