【问题标题】:Opt for spring-data-elasticsearch 3.2 while staying with spring-boot 2.3选择 spring-data-elasticsearch 3.2,同时使用 spring-boot 2.3
【发布时间】:2020-10-06 00:33:20
【问题描述】:

我们有一个使用 spring-data-r2dbc 在 spring-boot 2.3 上运行的 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 集群的根本原因)仍然加载,无论 version 6.8.12 在 spring 中声明如何-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版本了。

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

【问题讨论】:

    标签: spring-boot gradle spring-data-elasticsearch spring-data-r2dbc


    【解决方案1】:

    我没有 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;你一定要试试。

    【讨论】:

    • 谢谢!我猜 r2dbc 是安全的,因为加载的公共资源应该是 spring boot 依赖项 2.3 强制执行的。如果弹性搜索有问题,我想我们将不得不使用 spring-data-elasticsearch 中的响应式客户端,而是使用自定义 webclient REST API 交互...
    猜你喜欢
    • 1970-01-01
    • 2016-08-04
    • 2019-06-23
    • 2018-02-01
    • 1970-01-01
    • 2015-12-28
    • 2016-06-22
    • 2017-08-29
    • 2014-08-19
    相关资源
    最近更新 更多