在创建客户端

时间:2017-11-02 09:37:07

标签: java elasticsearch

我正在尝试制作一个弹性搜索传输客户端,但是低于错误

  

引起:java.lang.AbstractMethodError:   org.elasticsearch.transport.TcpTransport.sendMessage(Ljava /郎/对象; Lorg / elasticsearch /普通/字节/ BytesReference; Ljava /郎/可运行;)V     在   org.elasticsearch.transport.TcpTransport.internalSendMessage(TcpTransport.java:1111)     在   org.elasticsearch.transport.TcpTransport.sendRequestToChannel(TcpTransport.java:1093)     在   org.elasticsearch.transport.TcpTransport.executeHandshake(TcpTransport.java:1600)

这是我的代码:

Settings settings = Settings.builder()
        .put("cluster.name", "elasticsearch")
        .put("node.name", "node1").build();

TransportClient client = new PreBuiltTransportClient(settings)
        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));

这是依赖性问题吗?

2 个答案:

答案 0 :(得分:0)

我被卡住了。您不能混合依赖版本。

原来,我在一个项目中使用spring-data-elasticsearch,而这个项目依赖于另一个具有普通elasticsearch依赖性的项目。其中包括不同的版本,并导致该错误。

追查真不好玩。

答案 1 :(得分:0)

这是一个依赖性问题。在maven pom中,我具有以下依赖项

<dependency> 
   <groupId>org.elasticsearch</groupId> 
   <artifactId>elasticsearch</artifactId> 
   <version>5.6.2</version> 
</dependency> 
<dependency> 
   <groupId>org.elasticsearch.client</groupId>
   <artifactId>transport</artifactId>
   <version>5.6.3</version>
</dependency>

我已经删除了org.elasticsearch的依赖关系,并且运行良好。