在使用spring-boot 2.3的同时选择spring-data-elasticsearch 3.2

问题描述

我们在spring-boot 2.3上运行了一个带有spring-data-r2dbc的Web服务,该服务仅在spring-boot 2.3之后可用。

最近,我们需要与现有的elasticsearch 6.x集群集成,而spring-boot 2.3附带的spring-data-elasticsearch 4.0不支持该集群。

我试图明确声明依赖项 spring-data-elasticsearch 3.2.10 (它支持6.x es集群),但是我可以看到 elasticsearch-rest-high-level-客户端7.6.2 (此依赖关系是spring-data-elasticsearch 4.0不再支持6.x es集群的根本原因),无论春季是否声明了版本6.8.12 -data-elasticsearch 3.2.10的pom.xml。

我正在使用带有io.spring.dependency-managementorg.springframework.boot插件的gradle。我想知道如何在选择正确的spring-data-elasticsearch 3.2.10的同时使用spring-boot 2.3?

==========编辑=========

我碰到了这篇帖子Why does Gradle downgrade my transitive dependencies in a Grails 3.1 application?,发现这是因为io.spring.dependency-management gradle插件将Elasticsearch版本强制为7.6.2。

我通过ext["elasticsearch.version"] = 6.8.12进行了更改,现在可以使用elasticsearch版本了。

但是,我仍然不确定以这种方式覆盖版本是否会导致任何无法预料的问题。

解决方法

我没有gradle设置来测试这一点,但是使用Maven,您需要做两件事:

设置Elasticsearch版本的属性和Spring Data Elasticsearch的依赖项:

    <properties>
        <elasticsearch.version>6.8.4</elasticsearch.version>
    </properties>

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

使用示例程序的第一次测试似乎可以运行,但是可能存在问题,因为spring-data-elasticsearch和spring-data-r2dbc现在都依赖于不同版本的spring-data-commons。您将不得不尝试。