springboot 项目依赖 es包版本异常

Posted zhangxingsheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot 项目依赖 es包版本异常相关的知识,希望对你有一定的参考价值。

 

 

 

 在项目pom.xml中加入依赖

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.6.1</version>
</dependency>

<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>7.6.1</version>
</dependency>

 

 发现项目总会拉下 6.4.3 的版本,并且项目中也会引用这个版本然后启动项目,还会发现找不到方法的异常

技术图片

 

 

Exception in thread "main" java.lang.NoSuchMethodError: org.elasticsearch.client.Request.addParameters(Ljava/util/Map;)V
at org.elasticsearch.client.RequestConverters.index(RequestConverters.java:341)
at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1510)
at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1484)
at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1454)
at org.elasticsearch.client.RestHighLevelClient.index(RestHighLevelClient.java:871)
at com.majb.es.ESMain.main(ESMain.java:23)

 

点进去发现 RequestConverters 引用的7.6.1版本,

而Request 引用的却是6.4.3版本。 很明显是版本的问题了。那就奇怪了,我引用的7.6.1版本,但是rest-client包却是6.4.3。

技术图片

 

 

原因是因为我用的springboot版本是2.1.6。 这个版本的springboot默认引用的是es 的6.4.3版本。所以我们要在pom.xml中显式的指定es的版本

 <properties>
        <elasticsearch.version>7.6.1</elasticsearch.version>
    </properties>

 

以上是关于springboot 项目依赖 es包版本异常的主要内容,如果未能解决你的问题,请参考以下文章

为什么在SpringBoot+maven的项目中,所引入的依赖包可以不指定依赖的版本号?

springboot整合ES的基本操作

SpringBoot – 将项目代码与依赖jar包分开打包教程

SpringBoot工程创建的三种方式

SpringBoot工程创建的三种方式

SpringBoot参数校验及异常捕获