我有一个启用了安全性的ElasticSearch服务器。我有一个Java应用程序(在Tomcat中运行的Restful服务),它试图使用HTTP RestClient连接到ElasticSearch(因此ElasticSearch服务器和Java应用程序之间的版本差异不应该是一个问题)。两个示例都在Azure上的同一VPN中运行。我已经将ElasticSearch服务器的证书导入到Java应用程序示例中的JDK密钥库中,但与ElasticSearch服务器的连接失败,出现以下异常:
java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[?:1.8.0_362]
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:716) ~[?:1.8.0_362]
at org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvent(DefaultConnectingIOReactor.java:171) ~[httpcore-nio-4.4.5.jar:4.4.5]
at org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvents(DefaultConnectingIOReactor.java:145) ~[httpcore-nio-4.4.5.jar:4.4.5]
at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:348) ~[httpcore-nio-4.4.5.jar:4.4.5]
at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.execute(PoolingNHttpClientConnectionManager.java:192) ~[httpasyncclient-4.1.2.jar:4.1.2]
at org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1.run(CloseableHttpAsyncClientBase.java:64) ~[httpasyncclient-4.1.2.jar:4.1.2]
at java.lang.Thread.run(Thread.java:750) [?:1.8.0_362]
字符串
两个示例之间不存在网络连接问题。我通过在Java应用程序运行的同一示例上执行以下curl请求验证了这一点:
sudo curl --cacert /path/to/my/http_ca.crt -u elastic https://x.x.x.x:9200
型
同样的CA证书也被导入到Java密钥库中。我在测试环境中有一个类似的设置,Java应用程序能够连接到测试ElasticSearch服务器示例。这表明代码没有任何问题。还能有什么问题
1条答案
按热度按时间qnyhuwrf1#
看起来你的es服务器没有监听目标示例的端口。仔细检查你的代码中的elasticsearch配置,比如主机,端口,用户名等。