使用Java进行弹性搜索以获得独立应用程序

时间:2017-06-29 05:17:28

标签: java elasticsearch

我收到以下错误:

堆栈跟踪:

线程中的异常" main" java.lang.NoSuchMethodError:io.netty.buffer.CompositeByteBuf.addComponents(ZLjava / lang / Iterable;)Lio / netty / buffer / CompositeByteBuf;     在org.elasticsearch.transport.netty4.Netty4Utils.toByteBuf(Netty4Utils.java:117)     at org.elasticsearch.transport.netty4.Netty4Transport.sendMessage(Netty4Transport.java:395)     at org.elasticsearch.transport.netty4.Netty4Transport.sendMessage(Netty4Transport.java:94)     at org.elasticsearch.transport.TcpTransport.internalSendMessage(TcpTransport.java:1125)     at org.elasticsearch.transport.TcpTransport.sendRequestToChannel(TcpTransport.java:1107)     at org.elasticsearch.transport.TcpTransport.executeHandshake(TcpTransport.java:1622)     at org.elasticsearch.transport.TcpTransport.openConnection(TcpTransport.java:556)     在org.elasticsearch.transport.TcpTransport.openConnection(TcpTransport.java:117)     at org.elasticsearch.transport.TransportService.openConnection(TransportService.java:334)     at org.elasticsearch.client.transport.TransportClientNodesService $ SimpleNodeSampler.doSample(TransportClientNodesService.java:408)     at org.elasticsearch.client.transport.TransportClientNodesService $ NodeSampler.sample(TransportClientNodesService.java:358)     at org.elasticsearch.client.transport.TransportClientNodesService.addTransportAddresses(TransportClientNodesService.java:199)     at org.elasticsearch.client.transport.TransportClient.addTransportAddress(TransportClient.java:322)

我使用ES:5.4.2和Lucene:6.5.1和netty-all 4.0.9,netty buffer 4.1.11和netty-common 4.1.11 jars

我的java代码如下:

 Settings settings =Settings.builder().put("cluster.name", "my-application").build();
  TransportClient client = new PreBuiltTransportClient(settings);
  TransportAddress address = new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300);
   client.addTransportAddress(address);

2 个答案:

答案 0 :(得分:1)

问题是因为代码没有错误而导致Netty版本冲突。

此问题是由项目中不同依赖项使用的并发版本的Netty引起的。 基本上,ES 5 Transport API需要Netty 4.和Dependency X,仍然使用Netty 3.这可能会导致这个问题。

尝试顺序:

  1. 在项目中添加Netty 4作为依赖项
  2. 创建一个使用ES 5 Transport Client的独立项目

答案 1 :(得分:0)

netty3 jar没有问题,还有其他一些jar问题,现在已经解决了。已经包含了下面的jars,如截图所示

enter image description here