1

有没有人成功让 Spring Boot、Spring Data Elasticsearch 和 Elasticsearch 5.x 工作?

我更新了我的 pom 以使用 spring-data-elasticsearch 3.0.0.RELEASE(刚刚发布),它在 Github 中有提交说明,说它支持 ES 5。

我遇到了一些错误,这些错误是由于没有声明对spring-data-common. 在没有版本的情况下添加后,我注意到它显然是由 Spring Boot 管理的,并且引入了 1.13.7.RELEASE

这引起:java.lang.NoClassDefFoundError: org/springframework/data/mapping/model/Property

然后我升级spring-data-common到 2.0.0.RELEASE,认为所有东西的最新版本都应该兼容。当存储库连接时,这会导致 AbstractMethodError 异常。

任何人都可以提供任何提示吗?这是我的 POM 的依赖项

Managed versions from Parent POM:
    <spring-boot.version>1.5.7.RELEASE</spring-boot.version>
    <spring-cloud.version>Dalston.RELEASE</spring-cloud.version>

From POM from the child module where things don't work

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons</artifactId>
<!--            <version>2.0.0.RELEASE</version> -->
        </dependency>

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

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

        <dependency>
                <groupId>org.elasticsearch.client</groupId>
                <artifactId>transport</artifactId>
             <version>5.5.0</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
        </dependency>

    </dependencies>
4

3 回答 3

1

编辑标题的人做了不准确的描述。正如最初所说,这个问题是一个“依赖地狱”。没有缺少依赖项,而是大量的传递依赖项,所有版本都需要以神奇的非显而易见/未记录的方式进行协调。– JvmSd121

于 2017-10-06T00:00:19.923 回答
0

你们让我走上了正轨。我升级如下:

Spring Core(及相关):5.0.0.RELEASE Spring Boot:2.0.0.M4 Spring Cloud:Finchley.M2

有了这些,托管版本将更新如下:

spring-data-commons: 2.0.0.RC3 (来自 release-train KAY-RC3) spring-data-elasticsearch: 3.0.0.RC3 (来自 release-train KAY-RC3) elasticsearch and transport: 5.5.2 (满足我的5.x 要求)

我们在父 pom 中为其他子模块管理了 Jackson 的版本,这导致引入了不兼容的版本。我将 Spring Boot 项目中的那些版本覆盖为 Spring 中定义的 ${jackson.version} 版本,如下所示:

    spring-jackson-version=2.9.1

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>${spring-jackson.version}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${spring-jackson.version}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${spring-jackson.version}</version>
    </dependency>

我从我的存储库中收到另一个错误,我认为这是由于我的数据模型而造成的。所有的类路径错误似乎都消失了。如果我发现任何进一步的信息,我会再次更新。什么cf!

感谢您的提示。

于 2017-10-05T00:50:47.743 回答
0

我曾经将 spring-data-elasticsearch(带有 ES 2.x)项目迁移到使用 ES 5.x。

我丢失了来源,但我这里还有罐子

于 2017-10-04T06:57:03.760 回答