spring-data-elasticsearch报错java.lang.NoSuchMethodError: ‘long org.elasticsearch.search.SearchHits.

    技术2022-07-16  53

    使用spring-boot-starter-data-elasticsearch搭建项目,注意把在pom.xml配置es客户端的版本号,配置如下:

    <properties> <java.version>1.8</java.version> <druid.version>1.1.10</druid.version> <elasticsearch.version>7.7.0</elasticsearch.version> <log4j.version>1.2.17</log4j.version> </properties>

    此时可以正常连接ES服务器,创建type和插入数据都正常,但是查询数据的时候报错如下:

    java.lang.NoSuchMethodError: 'long org.elasticsearch.search.SearchHits.getTotalHits()' at org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.doCount(ElasticsearchRestTemplate.java:612) at org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.count(ElasticsearchRestTemplate.java:586) at org.springframework.data.elasticsearch.repository.support.AbstractElasticsearchRepository.count(AbstractElasticsearchRepository.java:168) at org.springframework.data.elasticsearch.repository.support.AbstractElasticsearchRepository.findAll(AbstractElasticsearchRepository.java:123) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:371) at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:204) at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:657) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:621) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:605)

    原因是版本不对,springboot 2.3以下只支持到 elasticsearch 6.8.2!在spring官网可以找到版本对应关系如下: 把springboot的版本号升级到2.3以上即可。

    Processed: 0.017, SQL: 9