问题描述
我们在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-management
和org.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。您将不得不尝试。