java - Spring Boot 中未找到 Elasticsearch 方法

标签 java spring-boot elasticsearch elasticsearch-high-level-restclient elasticsearch-rest-client

我已经被这个问题困扰了一段时间,感谢您的帮助。我正在运行 Spring Boot 版本 2.2.0 以及 ElasticSearch 高级 REST 客户端版本 6.4.3 并使用版本 3.2.0 Spring-Data-Elasticsearch 版本。我收到以下错误。我已尝试以下尝试来修复,但没有成功。

  1. 多次更改 Spring Boot 版本
  2. 多次更改ES版本
  3. 我已清除 .m2 文件夹并多次重新下载 Maven 依赖项。

我在下面遇到的问题是

尝试调用不存在的方法。尝试从以下位置进行:

org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.putMapping(ElasticsearchRestTemplate.java:292)

以下方法不存在:

org.elasticsearch.client.IndicesClient.putMapping(Lorg/elasticsearch/action/admin/indices/mapping/put/PutMappingRequest;Lorg/elasticsearch/client/RequestOptions;)Lorg/elasticsearch/action/support/master/AcknowledgedResponse;

该方法的类 org.elasticsearch.client.IndicesClient 可从以下位置获取:

jar:file:/Users/user/.m2/repository/org/elasticsearch/client/elasticsearch-rest-high-level-client/6.4.3/elasticsearch-rest-high-level-client-6.4.3.jar!/org/elasticsearch/client/IndicesClient.class

它是从以下位置加载的: 文件:/Users/user/.m2/repository/org/elasticsearch/client/elasticsearch-rest-high-level-client/6.4.3/elasticsearch-rest-high-level-client-6.4.3.jar

行动: 更正应用程序的类路径,使其包含单个兼容版本的 org.elasticsearch.client.IndicesClient

我的 POM 如下

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-elasticsearch</artifactId>
        <version>3.2.0</version>
    </dependency>

感谢任何帮助。我确信它必须处理兼容性问题,但不确定是哪个。谢谢大家!

更新

通过将我的elasticsearch版本更改为6.7.0,我能够成功运行它。但现在我收到以下错误

org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=index_not_found_exception, reason=no such index]

我的 POM 现在也如下所示。

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

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

    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>elasticsearch-rest-client</artifactId>
        <version>6.70</version>
    </dependency>

最佳答案

之前的方法不存在的问题。已通过将elasticsearch版本更改为6.7.0解决。

为了避免这些不兼容问题,始终建议使用相同版本的elasticsearch服务器及其客户端。

关于java - Spring Boot 中未找到 Elasticsearch 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62122439/

相关文章:

java - 如何在@SpringBootTest 启动期间防止记录噪音?

mysql - Spring Boot 连接 MySQL 远程数据库

elasticsearch - 将 Logstash 配置为仅包含某些字段

java - 使用Java反射来获取类变量

java - 接口(interface)的默认方法可以用来描述行为吗?

java - DynamoDB : How can I create a table with nested JSON structure?

algorithm - elasticsearch Geo_Polygon过滤算法

java - 泛型和静态方法

java - 如何在 gradle 5.0.0 中将 bootRepackage 任务转换为 kotlin DSL?

elasticsearch - CURL:不支持Content-Type header [application/x-www-form-urlencoded]