无法使用java InetAddress查找主机,但可以使用curl查找
我有一个elasticsearch实例在专用网络中运行。当我试图使用InetAddress访问它时,它给出了一个错误:java.net.UnknownHostException:无法使用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
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,它工作得很好。因为您提供了正确的答案,所以仍然给予积分:)