通过spring-boot-starter-data-elasticsearch查询Elasticsearch时出现异常

时间:2016-12-21 08:30:46

标签: elasticsearch spring-boot spring-data spring-web

我正在学习使用gradle的spring-boot-starter-data-elasticsearch。 我在.gradle文件中定义了以下依赖项:

dependencies {
compile 'org.slf4j:slf4j-api:1.7.21'
compile 'org.springframework.boot:spring-boot-starter-data-elasticsearch:1.4.2.RELEASE'
compile 'org.springframework:spring-test:4.1.2.RELEASE'
compile 'org.springframework.boot:spring-boot-starter-logging:1.4.2.RELEASE'
compile 'org.springframework.boot:spring-boot-starter-web:1.4.2.RELEASE'
compile 'org.springframework.boot:spring-boot-starter-actuator:1.4.2.RELEASE'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.7.6'
compile 'com.fasterxml.jackson.core:jackson-core:2.7.6'
testCompile 'junit:junit:4.12'
}

我正在使用2.3.1的弹性搜索版本。 我通过扩展ElasticsearchRepository创建了一个类。 现在,当我尝试查询Elasticsearch时,我得到的是异常

  

java.lang.NoSuchMethodError:com.fasterxml.jackson.dataformat.smile.SmileGenerator.getOutputContext()Lcom / fasterxml / jackson / core / json / JsonWriteContext;`

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

这是一个典型的示例,您自己控制版本依赖项并选择不兼容的版本。你为什么这样做?

Spring Boot的优势之一是它提供了一致且一致的依赖关系管理。您可以让特定版本的Spring Boot为您管理该版本,而不是自己指定版本。这适用于Maven和Gradle。

通过前往https://start.spring.io,选择Gradle项目并在搜索框中键入您的依赖项(web,actuator,elasticsearch),您可以看到典型的gradle构建文件的样子。杰克逊已经通过网络提供,SLF4j随每个入门者提供。