Поэтому я пытаюсь заставить мой веб-сервис Spring Boot общаться с Elasticsearch (у меня есть другое приложение Java, которое работает)
Я получаю ошибку
DependencyException: Ошибкасоздание компонента с именем 'searchController': неудовлетворенная зависимость, выраженная через поле 'searchService';вложенное исключение - org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка при создании компонента с именем 'searchService': неудовлетворительная зависимость, выраженная через поле 'searchRepository';вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем searchRepository: сбой вызова метода 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 /asticsearch / 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>
}
Кто-нибудь понял, что не так?