无法使用Java API连接到ElasticSearch服务器 [英] Can't connect to ElasticSearch server using Java API

查看:873
本文介绍了无法使用Java API连接到ElasticSearch服务器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正尝试使用Java API连接到ElasticSearch服务器。我使用弹性搜索服务来启动/停止和弹性搜索头可视化集群。集群/节点处于活动状态,REST API在9200上通过卷曲工作正常。我已经阅读了关于此主题的每个帖子,但我无法使其正常工作,下面是我的详细信息:



我已尝试所有这些:


  1. 使用localhost,devhost1,127.0.0.1 ,或TransportClient中的网络上的实际IP

  2. 取消注释config.yaml中的IP属性并放置127.0.0.1(服务器)

  3. 检查是否端口9300是可用的,它是。

... 9200 / _cluster / nodes

  {
ok:true,
cluster_name:test,
nodes :{
NLVBbJpJTZWefeI2kQt3Tg:{
name:inventory_management,
transport_address:inet [/127.0.0.1:9300],
hostname :devhost1,
version:0.90.5,
http_address:inet [/127.0.0.1:9200]
}
}
}

... 9200 / _cl uster / health?pretty = true

  {
cluster_name:test,
status:green,
timed_out:false,
number_of_nodes:1,
number_of_data_nodes:1,
active_primary_shards
active_shards:0,
relocating_shards:0,
initializing_shards:0,
unassigned_shards:0
}

Java代码

 设置设置= ImmutableSettings.settingsBuilder()。put(cluster.name,test)。put(node.name,inventory_management)。 
客户端客户端=新的TransportClient(设置).addTransportAddress(新的InetSocketTransportAddress(localhost,9300));
IndexResponse response = client.prepareIndex(twitter,tweet,1)。setSource(json).execute()。actionGet();

异常:

p $ p $ c $ org.elasticsearch.transport.NodeDisconnectedException:[] [inet [localhost / 127.0.0.1:9300]] [/ cluster / nodes / info]
org.elasticsearch。 client.transport.NoNodeAvailableException:没有节点可用
在org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:138)
在org.elasticsearch.client.transport.support.InternalTransportClient.index (InternalTransportClient.java:124)
在org.elasticsearch.client.transport.TransportClient.index(TransportClient.java:242)
在org.elasticsearch.client.action.index.IndexRequestBuilder.doExecute(IndexRequestBuilder .java:219)
在org.elasticsearch.client.action.support.BaseRequestBuilder.execute(BaseRequestBuilder.java:52)
在org.elasticsearch.client.action.support.BaseRequestBuilder.execute(BaseRequestBuilder .java:47)

从客户端登录(Java A PI):

  [2013-10-24 16:37:15,783] [DEBUG] [threadpool.cached] [Aragorn]初始化缓存的线程池与keep_alive [1m],scheduled_size [20] 
[2013-10-24 16:37:15,809] [DEBUG] [client.transport] [Aragorn] node_sampler_interval [1s]
[ 2013-10-24 16:37:15,820] [DEBUG] [netty.channel.socket.nio.NioProviderMetadata]使用自动检测的NIO约束级别:0
[2013-10-24 16:37:15,872] [ DEBUG] [transport.netty] [Aragorn]连接到节点[[#temp#-1] [inet [localhost / 127.0.0.1:9300]]]
[2013-10-24 16:37:15,892] [DEBUG] [transport.netty] [Aragorn]断开与[[#temp#-1] [inet [localhost / 127.0.0.1:9300]]]
[2013-10-24 16:37:15,894] [DEBUG] [client.transport] [Aragorn]无法从[#temp#-1] [inet [localhost / 127.0.0.1:9300]]获取节点信息,从节点列表中删除
org.elasticsearch.transport .NodeDisconnectedException:[] [inet [localhost / 127.0.0.1:9300]] [/ cluster / nodes / info]

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 。

  discovery.zen.ping.multicast.enabled:false 
discovery.zen.ping.unicast.hosts: localhost#尝试与devhost1 127.0.0.1以及[localhost]也

这是服务器日志:

  [2013-10-25 13:49:58,379] [INFO] [node] [inventory_management]版本[0.90.5],pid [2426],建立[c8714e8 / 2013-09-17T12:50:20Z] 
[2013-10-25 13:49:58,379] [INFO] [node] [inventory_management]初始化...
[2013-10-25 13:49:58,382] [INFO] [plugins] [inventory_management] loaded [],sites []
[2013-10-25 13:49: 59,853] [INFO] [节点] [inventory_management]已初始化
[2013-10-25 13:49:59,853] [INFO] [节点] [inventory_management]开始...
[2013-10- 25 13:49:59,937] [信息] [运输] [inventory_管理] bound_address {inet [/ 0:0:0:0:0:0:0:0:9300]},publish_address {inet [/192.168.1.50:9300]}
[2013-10-25 13 :50:02,960] [INFO] [cluster.service] [inventory_management] new_master [inventory_management] [2-uG1xVNSSiLo5RVRrjbGg] [inet [/192.168.1.50:9300]],原因:zen-disco-join(elect_as_master)
[2013-10-25 13:50:02,972] [INFO] [discovery] [inventory_management] test / 2-uG1xVNSSiLo5RVRrjbGg
[2013-10-25 13:50:02,989] [INFO] [http] inventory_management] bound_address {inet [/ 0:0:0:0:0:0:0:0:9200]},publish_address {inet [/192.168.1.50:9200]}
[2013-10-25 13 :50:02,989] [INFO] [节点] [inventory_management]开始
[2013-10-25 13:50:03,024] [INFO] [网关] [inventory_management]将[0]索引恢复到cluster_state
[2013-10-25 13:50:09,399] [WARN] [transport.netty] [inventory_management]在传输层上捕获的异常[[id:0x02649775,/127.0.0.1:50028 => /127.0.0.1:9300]],关闭连接
java.io.StreamCorruptedException:无效的内部传输消息格式
在org.elasticsearch.transport.netty.SizeHeaderFrameDecoder.decode(SizeHeaderFrameDecoder.java:27)
在org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:425)
在org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.messageReceived (FrameDecoder.java:303)
在org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
在org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream (DefaultChannelPipeline.java:564)
在org.elasticsearch.common.netty.channel.DefaultChannelPipeline $ DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
在org.elasticsearch.common.netty.OpenChannelsHandler.handleUpstream (OpenChannelsHandler.java:74)
在org.elasticsearch.common.ne tty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
在org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
在org.elasticsearch.common。 netty.channel.Channels.fireMessageReceived(Channels.java:268)
在org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:255)
在org.elasticsearch.common。 netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
在org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109)
在org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312)
在org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker .java:90)
在org.elasticsearch.common.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
在org.elasticsearch.common.netty.util.ThreadRenamingRunn (.Run.Runable.java:108)
在org.elasticsearch.common.netty.util.internal.DeadLockProofWorker $ 1.run(DeadLockProofWorker.java:42)
在java.util.concurrent.ThreadPoolExecutor .runWorker(ThreadPoolExecutor.java:1145)
在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)
在java.lang.Thread.run(Thread.java:724 )
[2013-10-25 13:50:09,403] [WARN] [transport.netty] [inventory_management]在传输层上捕获的异常[[id:0x02649775,/127.0.0.1:50028:> /127.0.0.1:9300]],关闭连接
java.io.StreamCorruptedException:无效的内部传输消息格式
在org.elasticsearch.transport.netty.SizeHeaderFrameDecoder.decode(SizeHeaderFrameDecoder.java:27)
在org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:425)
在org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.cleanup (FrameDecoder.java:482)
在org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.channelDisconnected(FrameDecoder.java:365)
在org.elasticsearch.common.netty.channel .SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:102)
在org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
在org.elasticsearch.common.netty.channel .DefaultChannelPipeline $ DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
在org.elasticsearch.comm on.netty.OpenChannelsHandler.handleUpstream(OpenChannelsHandler.java:74)
在org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
在org.elasticsearch.common。 netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
在org.elasticsearch.common.netty.channel.Channels.fireChannelDisconnected(Channels.java:396)
在org.elasticsearch.common。 netty.channel.socket.nio.AbstractNioWorker.close(AbstractNioWorker.java:361)
在org.elasticsearch.common.netty.channel.socket.nio.NioServerSocketPipelineSink.handleAcceptedSocket(NioServerSocketPipelineSink.java:81)
在org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendDownstream(DefaultChannelPipeline.java:574)上的org.elasticsearch.common.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:36)

在org.elasticsearch.common.netty.channel.Channels.clo se(Channels.java:812)
在org.elasticsearch.common.netty.channel.AbstractChannel.close(AbstractChannel.java:197)
在org.elasticsearch.transport.netty.NettyTransport.exceptionCaught( NettyTransport.java:501)
在org.elasticsearch.transport.netty.MessageChannelHandler.exceptionCaught(MessageChannelHandler.java:228)
在org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler。 java:112)
在org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
在org.elasticsearch.common.netty.channel.DefaultChannelPipeline $ DefaultChannelHandlerContext.sendUpstream( DefaultChannelPipeline.java:791)
在org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.exceptionCaught(FrameDecoder.java:377)
在org.elasticsearch.common.netty.channel。 SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:112)
在org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
在org.elasticsearch.common.netty.channel.DefaultChannelPipeline $ DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
在org.elasticsearch.common.netty.OpenChannelsHandler.handleUpstream(OpenChannelsHandler.java:74)
在org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
在org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
在org.elasticsearch.common.netty.channel.Channels.fireExceptionCaught(Channels.java:525)
在org.elasticsearch.common.netty.channel.AbstractChannelSink.exceptionCaught(AbstractChannelSink.java:48)
在org.elasticsearch.common.netty.channel.DefaultChannelPipeline.notifyHandlerException(DefaultChannelPipeline.java:658)
在org.elasticsearch.common.netty.chann el.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:566)
在org.elasticsearch.common.netty.channel.DefaultChannelPipeline $ DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
在org.elasticsearch.common。 netty.OpenChannelsHandler.handleUpstream(OpenChannelsHandler.java:74)
在org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
在org.elasticsearch.common.netty。 channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
在org.elasticsearch.common.netty.channel.Channels.fireMessageReceived(Channels.java:268)
在org.elasticsearch.common.netty。 channel.Channels.fireMessageReceived(Channels.java:255)
在org.elasticsearch.common.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
在org.elasticsearch。 common.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109)
在org.elasti csearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312)
在org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90 )
在org.elasticsearch.common.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
在org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable .java:108)
在org.elasticsearch.common.netty.util.internal.DeadLockProofWorker $ 1.run(DeadLockProofWorker.java:42)
在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor。 java.lang.Thread.run(Thread.java:724)
$ java.util.concurrent.ThreadPoolExecutor $ Worker.run
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++

Java版本:

  java版本1.7.0_25
OpenJDK运行时环境(IcedTea 2.3.12)(7u25-2.3.12-4u buntu3)
OpenJDK 64位服务器虚拟机(构建23.7-b01,混合模式)

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++

问题已解决如下。确保您的客户端和服务器版本同步!

解决方案

只是这个问题标记为可能会遇到相同的人的回答问题(答案实际上是在问题的结尾)。



我遇到同样的问题,原来是使用的JAR的版本之间的差异由Java客户端和服务器正在运行的版本。你最好的方法是确保一个完全匹配,然后给出指示这里只是工作没有任何调整。



另一件要检查的是,您的Java客户端正在使用正确的端口,这是不是 http客户端使用的。正确的端口默认为9300而不是9200,由后者使用。


I am trying to connect to an ElasticSearch server using the Java API. I using elasticsearch service to start/stop and elasticsearch head for visualising the cluster. The cluster/node is active, the REST API works fine via curl on 9200. I have read pretty much every posts about this topic, yet I can't get it working, below are my details:

I have tried all these:

  1. Using localhost,devhost1,127.0.0.1,or the actual IP on the network in TransportClient
  2. Uncommenting the IP properties in config.yaml and putting 127.0.0.1 (server)
  3. Checking if port 9300 is available, it is.

...9200/_cluster/nodes

{
  "ok": true,
  "cluster_name": "test",
  "nodes": {
    "NLVBbJpJTZWefeI2kQt3Tg": {
      "name": "inventory_management",
      "transport_address": "inet[/127.0.0.1:9300]",
      "hostname": "devhost1",
      "version": "0.90.5",
      "http_address": "inet[/127.0.0.1:9200]"
    }
  }
}

...9200/_cluster/health?pretty=true

{
  "cluster_name" : "test",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0
}

Java Code:

Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "test").put("node.name", "inventory_management").build();
Client client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress("localhost", 9300));
IndexResponse response = client.prepareIndex("twitter", "tweet", "1").setSource(json).execute().actionGet();

Exception:

org.elasticsearch.transport.NodeDisconnectedException: [][inet[localhost/127.0.0.1:9300]][/cluster/nodes/info]
org.elasticsearch.client.transport.NoNodeAvailableException: No node available
    at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:138)
    at org.elasticsearch.client.transport.support.InternalTransportClient.index(InternalTransportClient.java:124)
    at org.elasticsearch.client.transport.TransportClient.index(TransportClient.java:242)
    at org.elasticsearch.client.action.index.IndexRequestBuilder.doExecute(IndexRequestBuilder.java:219)
    at org.elasticsearch.client.action.support.BaseRequestBuilder.execute(BaseRequestBuilder.java:52)
    at org.elasticsearch.client.action.support.BaseRequestBuilder.execute(BaseRequestBuilder.java:47)

Log from Client (Java API):

[2013-10-24 16:37:15,783][DEBUG][threadpool.cached        ] [Aragorn] Initializing cached thread pool with keep_alive[1m], scheduled_size[20]
[2013-10-24 16:37:15,809][DEBUG][client.transport         ] [Aragorn] node_sampler_interval[1s]
[2013-10-24 16:37:15,820][DEBUG][netty.channel.socket.nio.NioProviderMetadata] Using the autodetected NIO constraint level: 0
[2013-10-24 16:37:15,872][DEBUG][transport.netty          ] [Aragorn] Connected to node [[#temp#-1][inet[localhost/127.0.0.1:9300]]]
[2013-10-24 16:37:15,892][DEBUG][transport.netty          ] [Aragorn] Disconnected from [[#temp#-1][inet[localhost/127.0.0.1:9300]]]
[2013-10-24 16:37:15,894][DEBUG][client.transport         ] [Aragorn] Failed to get node info from [#temp#-1][inet[localhost/127.0.0.1:9300]], removed from nodes list
org.elasticsearch.transport.NodeDisconnectedException: [][inet[localhost/127.0.0.1:9300]][/cluster/nodes/info]

+++++++++++++++++++++++

Tried with Unicast same error in the Java API.

discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: "localhost" # Tried with devhost1 127.0.0.1 as well and ["localhost"] too

This is the server log:

[2013-10-25 13:49:58,379][INFO ][node                     ] [inventory_management] version[0.90.5], pid[2426], build[c8714e8/2013-09-17T12:50:20Z]
[2013-10-25 13:49:58,379][INFO ][node                     ] [inventory_management] initializing ...
[2013-10-25 13:49:58,382][INFO ][plugins                  ] [inventory_management] loaded [], sites []
[2013-10-25 13:49:59,853][INFO ][node                     ] [inventory_management] initialized
[2013-10-25 13:49:59,853][INFO ][node                     ] [inventory_management] starting ...
[2013-10-25 13:49:59,937][INFO ][transport                ] [inventory_management] bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/192.168.1.50:9300]}
[2013-10-25 13:50:02,960][INFO ][cluster.service          ] [inventory_management] new_master [inventory_management][2-uG1xVNSSiLo5RVRrjbGg][inet[/192.168.1.50:9300]], reason: zen-disco-join (elected_as_master)
[2013-10-25 13:50:02,972][INFO ][discovery                ] [inventory_management] test/2-uG1xVNSSiLo5RVRrjbGg
[2013-10-25 13:50:02,989][INFO ][http                     ] [inventory_management] bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/192.168.1.50:9200]}
[2013-10-25 13:50:02,989][INFO ][node                     ] [inventory_management] started
[2013-10-25 13:50:03,024][INFO ][gateway                  ] [inventory_management] recovered [0] indices into cluster_state
[2013-10-25 13:50:09,399][WARN ][transport.netty          ] [inventory_management] exception caught on transport layer [[id: 0x02649775, /127.0.0.1:50028 => /127.0.0.1:9300]], closing connection
java.io.StreamCorruptedException: invalid internal transport message format
    at org.elasticsearch.transport.netty.SizeHeaderFrameDecoder.decode(SizeHeaderFrameDecoder.java:27)
    at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:425)
    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:564)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
    at org.elasticsearch.common.netty.OpenChannelsHandler.handleUpstream(OpenChannelsHandler.java:74)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
    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:109)
    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:90)
    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)
[2013-10-25 13:50:09,403][WARN ][transport.netty          ] [inventory_management] exception caught on transport layer [[id: 0x02649775, /127.0.0.1:50028 :> /127.0.0.1:9300]], closing connection
java.io.StreamCorruptedException: invalid internal transport message format
    at org.elasticsearch.transport.netty.SizeHeaderFrameDecoder.decode(SizeHeaderFrameDecoder.java:27)
    at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:425)
    at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.cleanup(FrameDecoder.java:482)
    at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.channelDisconnected(FrameDecoder.java:365)
    at org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:102)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
    at org.elasticsearch.common.netty.OpenChannelsHandler.handleUpstream(OpenChannelsHandler.java:74)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
    at org.elasticsearch.common.netty.channel.Channels.fireChannelDisconnected(Channels.java:396)
    at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioWorker.close(AbstractNioWorker.java:361)
    at org.elasticsearch.common.netty.channel.socket.nio.NioServerSocketPipelineSink.handleAcceptedSocket(NioServerSocketPipelineSink.java:81)
    at org.elasticsearch.common.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:36)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendDownstream(DefaultChannelPipeline.java:574)
    at org.elasticsearch.common.netty.channel.Channels.close(Channels.java:812)
    at org.elasticsearch.common.netty.channel.AbstractChannel.close(AbstractChannel.java:197)
    at org.elasticsearch.transport.netty.NettyTransport.exceptionCaught(NettyTransport.java:501)
    at org.elasticsearch.transport.netty.MessageChannelHandler.exceptionCaught(MessageChannelHandler.java:228)
    at org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:112)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
    at org.elasticsearch.common.netty.handler.codec.frame.FrameDecoder.exceptionCaught(FrameDecoder.java:377)
    at org.elasticsearch.common.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:112)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
    at org.elasticsearch.common.netty.OpenChannelsHandler.handleUpstream(OpenChannelsHandler.java:74)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
    at org.elasticsearch.common.netty.channel.Channels.fireExceptionCaught(Channels.java:525)
    at org.elasticsearch.common.netty.channel.AbstractChannelSink.exceptionCaught(AbstractChannelSink.java:48)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.notifyHandlerException(DefaultChannelPipeline.java:658)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:566)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
    at org.elasticsearch.common.netty.OpenChannelsHandler.handleUpstream(OpenChannelsHandler.java:74)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    at org.elasticsearch.common.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
    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:109)
    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:90)
    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)

+++++++++++++++++++++++
+++++++++++++++++++++++

Java version:

java version "1.7.0_25"
OpenJDK Runtime Environment (IcedTea 2.3.12) (7u25-2.3.12-4ubuntu3)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)

+++++++++++++++++++++++
+++++++++++++++++++++++
+++++++++++++++++++++++

Issue has been solved as per below. Make sure your client and server versions are in sync!

解决方案

Just so this question is marked answered for others who may experience the same issue (the answer is actually at the end of the question).

I ran into the same issue and it turned out to be a discrepancy between the version of the JAR used by the Java client and the version the server was running. Your best bet is to ensure an exact match, then the instructions given here just work w/o any tweaking.

Another thing to check is that your Java client is using the correct port, which is not the one used by http clients. The correct port defaults to 9300 rather than 9200, which is used by the latter.

这篇关于无法使用Java API连接到ElasticSearch服务器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆