elasticsearch,network-programming,Java,Curl,elasticsearch,Network Programming" /> elasticsearch,network-programming,Java,Curl,elasticsearch,Network Programming" />

无法使用java InetAddress查找主机,但可以使用curl查找

无法使用java InetAddress查找主机,但可以使用curl查找,java,curl,elasticsearch,network-programming,Java,Curl,elasticsearch,Network Programming,我有一个elasticsearch实例在专用网络中运行。当我试图使用InetAddress访问它时,它给出了一个错误:java.net.UnknownHostException: TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddress(new InetSocketTransportAddress(InetAddress

我有一个elasticsearch实例在专用网络中运行。当我试图使用InetAddress访问它时,它给出了一个错误:java.net.UnknownHostException:

TransportClient client = new PreBuiltTransportClient(settings)
                .addTransportAddress(new InetSocketTransportAddress(InetAddress
                        .getByName("http://elasticsearch.myorg.net"), 9200));
然而,当我尝试使用curl命令访问它时,我能够得到响应

curl http://elasticsearch.myorg.net:9200
可能导致此问题的原因是什么


我的一个变通方法是使用resttemplate


这是一个非常简洁的解决方案。

使用端口9300而不是9200。9200用于RESTAPI,9300用于集群间通信和传输客户端


您是否尝试删除名称的http://部分?可能代理设置正在进行中?我不需要代理,因为我在同一个私人网络上。而且我没有为curl ayway使用任何代理…尝试删除http,也不起作用
getByName
需要主机名,在这种情况下
elasticsearch.myorg.net
。如果您可以
ping elasticsearch.myorg.net
nslookup elasticsearch.myorg.net
它应该可以工作。这就是问题所在,我无法ping它,只是不确定您在哪里看到了此信息。我尝试使用9300,结果是:这不是一个HTTP端口。文档中提到9300端口是用于传输客户端的端口。对于curl和浏览器请求,使用9200。对于传输客户端,在您提供的构造函数片段中使用9300。实际上,elasticsearch配置为仅接受9200处的HTTP请求。。。所以在这种情况下,transportclient不会为我工作。我使用了RestTemplate,它工作得很好。因为您提供了正确的答案,所以仍然给予积分:)