java - 专用服务器上的elasticsearch RemoteTransportException

标签 java exception elasticsearch

我正在尝试将elasticsearch与生产集成,但出现以下异常。 我在两个服务器 1.7.0_40 中使用的 jvm

2015-01-12 21:29:06 DEBUG netty:94 - [Whitemane, Aelfyre] connected to node [[#transport#-1][inet[/xxx.xxx.xx.xxx:9300]]] 2015-01-12 21:29:06 WARN netty:114 - [Whitemane, Aelfyre] Message not fully read (response) for [63] handler future(org.elasticsearch.client.transport.TransportClientNodesService$SimpleNodeSampler$1@4e70a141), error [true], resetting 2015-01-12 21:29:06 INFO transport:109 - [Whitemane, Aelfyre] failed to get node info for [#transport#-1][inet[/xxx.xxx.xx.xxx:9300]], disconnecting... org.elasticsearch.transport.RemoteTransportException: Failed to deserialize exception response from stream Caused by: org.elasticsearch.transport.TransportSerializationException: Failed to deserialize exception response from stream at org.elasticsearch.transport.netty.MessageChannelHandler.handlerResponseError(MessageChannelHandler.java:171) at org.elasticsearch.transport.netty.MessageChannelHandler.messageReceived(MessageChannelHandler.java:125) at org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:560) at org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:787) at org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:296) at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462) at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443) at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303) at org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:560) at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:555) at org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:268) at org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:255) at org.elasticsearch.common.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88) at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:107) at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312) at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:88) at org.elasticsearch.common.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) 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:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724) Caused by: java.io.InvalidClassException: failed to read class descriptor at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1601) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1515) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1620) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1515) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1620) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1515) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1620) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1515) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1348) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) at org.elasticsearch.transport.netty.MessageChannelHandler.handlerResponseError(MessageChannelHandler.java:169) ... 23 more Caused by: java.lang.ClassNotFoundException: org.elasticsearch.ElasticsearchException at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.elasticsearch.common.io.ThrowableObjectInputStream.loadClass(ThrowableObjectInputStream.java:93) at org.elasticsearch.common.io.ThrowableObjectInputStream.readClassDescriptor(ThrowableObjectInputStream.java:67) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1599) ... 34 more

最佳答案

根据根异常java.lang.ClassNotFoundException: org.elasticsearch.ElasticsearchException以及您将Elasticsearch集成到的任何内容(将elasticsearch与生产集成)来判断,我猜测:

  • 您的“生产”系统的类路径中缺少 elasticsearch.jar,或者您认为它位于类路径中,但实际上并非如此
  • 您正在使用不同的 Elasticsearch 版本(服务器有一个版本,您的“生产”系统使用另一个版本的 ES jar

在 Elasticsearch 0.20.5 中,这是有问题的类:https://github.com/elasticsearch/elasticsearch/blob/v0.20.5/src/main/java/org/elasticsearch/ElasticSearchException.java 。请注意类的名称 - ElasticSearchException(大写字母“S”)。

在 Elasticsearch 1.4.2 中,类名已更改:https://github.com/elasticsearch/elasticsearch/blob/v1.4.2/src/main/java/org/elasticsearch/ElasticsearchException.java 。请注意类的名称 - ElasticsearchException(小写“s”)。

因此,您确实需要在两台服务器上使用相同的 Elasticsearch 版本。

关于java - 专用服务器上的elasticsearch RemoteTransportException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27915732/

相关文章:

java - 为什么我的逆投影矩阵的两个元素始终为 0?

java - 从带有通配符路径的 servlet 发送时出现 404

java RMI + 源命中服务器来自互联网或来自内网

java - 安卓, Collection

c# - 为用户提供发送未捕获异常错误报告的选项

java - 使布局可点击,并启动一个 Intent

c# - 捕获后继续尝试 block 。在一个 try catch 中记录所有异常

elasticsearch - 在 Elasticsearch 中对嵌套文档进行排序

elasticsearch函数得分,提升权重 "number of matched terms in query"(协调)

elasticsearch - 由于Netty-Client主机名解析,AWS工作人员无法通信