Java Elasticsearch:在传输层捕获异常
将Elasticsearch从1.6版升级到2.1版后,我在Java应用程序中看到一个错误 应用程序以前使用Java,但现在连接立即终止,结果在应用程序中抛出类似的错误(Java Elasticsearch:在传输层捕获异常,java,parsing,elasticsearch,jboss,transport,Java,Parsing,elasticsearch,Jboss,Transport,将Elasticsearch从1.6版升级到2.1版后,我在Java应用程序中看到一个错误 应用程序以前使用Java,但现在连接立即终止,结果在应用程序中抛出类似的错误(org.elasticsearch.client.transport.NoNodeAvailableException) 这一切都发生在第一次连接尝试期间,这表明版本之间存在冲突,但也可能是其他原因 具体是什么,除了更改版本,还有什么方法可以修复它吗 elasticsearch.log: [2015-12-08 17:42:54
org.elasticsearch.client.transport.NoNodeAvailableException
)
这一切都发生在第一次连接尝试期间,这表明版本之间存在冲突,但也可能是其他原因
具体是什么,除了更改版本,还有什么方法可以修复它吗
elasticsearch.log
:
[2015-12-08 17:42:54,035][WARN ][transport.netty ] [Lorna Dane] exception caught on transport layer [[id: 0x9f75ad33, /192.168.0.208:21248 => /192.168.0.140:9300]], closing connection
java.lang.IllegalStateException: Message not fully read (request) for requestId [0], action [cluster/nodes/info], readerIndex [39] vs expected [57]; resetting
at org.elasticsearch.transport.netty.MessageChannelHandler.messageReceived(MessageChannelHandler.java:120)
at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)
at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462)
at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443)
at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)
at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
at org.elasticsearch.common.netty.OpenChannelsHandler.handleUpstream(OpenChannelsHandler.java:75)
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108)
at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337)
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
at org.jboss.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)
Java控制台:
Exception in thread "main" org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: []
at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:298)
at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:214)
at org.elasticsearch.client.transport.support.InternalTransportClusterAdminClient.execute(InternalTransportClusterAdminClient.java:85)
at org.elasticsearch.client.support.AbstractClusterAdminClient.state(AbstractClusterAdminClient.java:138)
at org.elasticsearch.action.admin.cluster.state.ClusterStateRequestBuilder.doExecute(ClusterStateRequestBuilder.java:94)
at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:91)
at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:65)
确保elasticsearch客户端库jar与集群版本保持同步 例如,在使用Maven时:
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.1.0</version>
</dependency>
org.elasticsearch
弹性搜索
2.1.0
对于任何>2.x Elasticsearch实例,只要仍有1.x机器在同一网络上查找群集(它发送错误的协议信息),就会发生这种情况。从技术上讲,你可以忽略它(它只是让你知道1.x机器试图连接,但连接无效),但是如果你让它呆太久,你的日志可能会被填满
最好的解决方案是将旧的1.x节点与新节点隔离,直到完成升级
请参阅:您的集群由哪些节点组成?您是否升级了所有ES节点并重新编制了数据索引?我连接的只是一个实例。它已经升级,数据还没有移动,这就是应用程序的用途。您是否删除了IDE中以前的jar文件,转而使用新的弹性jar文件来正确连接到新版本?你在新版本中设置集群名称了吗?没有。移动它们是有意义的。这可能就是问题所在,在快速检查之后,我注意到我的
pom.xml
正在使用ver。1.3.2.@Peter:我从这里下载了es文件——sudo wget——但不确定在哪里可以找到pom.xmlfile@user1050619仅当您使用管理应用程序依赖关系时,此pom.xml才相关。如果手动处理jar文件,只需确保客户端jar的版本与正在运行的elasticsearch集群的版本相同。