我正在尝试将一个Java应用程序从localhost连接到根服务器上的elasticsearch集群。我的问题是java客户端无法建立连接。
在根服务器(groupelite.de)上打开端口9200-9299和9300-9400。
我将弹性搜索群集配置为使用单播发现,并将其inet ip地址设置为" network.host"。 这是我实例化我的客户端的方式:
NodeBuilder.nodeBuilder()
.clusterName("neeedo-es")
.settings(ImmutableSettings.settingsBuilder()
.classLoader(classOf[Settings].getClassLoader)
.put("discovery.zen.ping.unicast.hosts", "groupelite.de:9300")
.put("node.name", "neeedo-client"))
.client(true)
.data(false)
.node()
这是我的elasticsearch.yml https://gist.github.com/MeiSign/ccfdcc62643c1185bab3
应关闭服务器上的防火墙。您也可以使用http http://www.groupelite.de:9200/
与es联系服务器正在运行ubuntu 14.04。客户端和服务器上的Elasticsearch版本为1.4.2。
我不太习惯网络联系,但我希望从你们那里得到一些错误的想法。
编辑1: 服务器日志不时显示ConnectionClosed Exception。但是当客户端尝试连接时它不会出现,你根本看不到日志中的客户端。
[2015-01-31 18:31:45,921][WARN ][transport.netty] [neeedo-s1] exception caught on transport layer [[id: 0x1685f631]], closing connection
java.net.SocketException: Network is unreachable
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:716)
at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.connect(NioClientBoss.java:152)
at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.processSelectedKeys(NioClientBoss.java:105)
at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.process(NioClientBoss.java:79)
at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318)
at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.run(NioClientBoss.java:42)
at org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
at org.elasticsearch.common.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
编辑2: 我发现它在我的应用程序中使用传输客户端时有效。这是否暗示出了什么问题?