所以我试图让我的Spring Boot Web服务与Elasticsearch对话(我有另一个运行的Java应用程序)
我得到的错误是
DependencyException:创建名称为“ searchController”的bean时出错:通过字段“ searchService”表示的不满意的依赖关系;嵌套的异常是org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为“ searchService”的bean时出错:通过字段“ searchRepository”表示的不满足的依赖关系;嵌套的异常是org.springframework.beans.factory.BeanCreationException:创建名称为“ searchRepository”的bean时出错:调用init方法失败;嵌套的异常是org.springframework.beans.BeanInstantiationException:无法实例化[org.springframework.data.elasticsearch.repository.support.SimpleElasticsearchRepository]:构造函数抛出了异常;嵌套异常是java.lang.NoSuchMethodError:org.elasticsearch.action.admin.indices.mapping.put。PutMappingRequestBuilder.execute()Lorg / elasticsearch / action / ListenableActionFuture; 2018-10-27 22:18:49.139信息1925--[main] o.apache.catalina.core.StandardService:停止服务[Tomcat]
我的依赖(Gradle)是
compile group: 'org.elasticsearch.plugin', name: 'transport-netty4-client', version: '6.4.2'
compile group: 'org.elasticsearch.client', name: 'transport', version: '6.4.2'
compile 'org.elasticsearch:elasticsearch:6.4.2'
compile('org.springframework.boot:spring-boot-starter-data-elasticsearch')
我的模特
@org.springframework.data.elasticsearch.annotations.Document(indexName = "burf", type = "pages")
data class Result(@Id val handle: String,
val url: String,
val title: String,
val body: String,
val meta_description: String?) {
}
设定档
@Configuration
@EnableElasticsearchRepositories(basePackages = arrayOf("com.burfdevelopment.skynet.repository\n"))
@ComponentScan(basePackages = arrayOf("com.burfdevelopment.skynet.service"))
class Config {
@Value("\${elasticsearch.home:/usr/local/Cellar/elasticsearch}")
private val elasticsearchHome: String? = null
@Value("\${elasticsearch.cluster.name:skynet}")
private val clusterName: String? = null
@Bean
fun client(): Client {
val settings = Settings.builder()
.put("cluster.name", clusterName).build()
return PreBuiltTransportClient(settings).addTransportAddress(TransportAddress(InetAddress.getByName("192.168.0.100"), 9300))
}
@Bean
fun elasticsearchTemplate(): ElasticsearchOperations {
return ElasticsearchTemplate(client())
}
}
资料库
interface SearchRepository : ElasticsearchRepository<Result, String> {
fun findByTitle(name: String, pageable: Pageable): Page<Result>
}
有人知道怎么了吗?
您正在使用的Spring Boot版本使用与Elasticsearch 6.4不兼容的Spring Data Elasticsearch版本。
为了确保使用兼容版本,请从Elasticsearch依赖项中删除该版本,并允许Spring Boot的依赖项管理来控制该版本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句