Я хочу использовать ElasticSearch и Spring Data. Я добавил эти зависимости:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>
Я хочу использовать автоконфигурацию. Я следую этому do c: https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot -features-connected-to-elasticsearch-rest
If you have the org.elasticsearch.client:elasticsearch-rest-high-level-client
dependency on the classpath, Spring Boot will auto-configure a RestHighLevelClient
Я создал репозиторий:
@Repository
public interface ArticleRepository extends ElasticsearchRepository<Article, String> {
Page<Article> findByAuthorsName(String name, Pageable pageable);
}
I добавил это, но теперь он работает!
Я получаю сообщение об ошибке после запуска приложения:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating
bean with name 'articleRepository' defined in com.example.elasticsearch.repository.ArticleRepository defined in @EnableElasticsearchRepositories declared on Config:
Cannot resolve reference to bean 'elasticsearchTemplate' while setting bean property 'elasticsearchOperations'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'elasticsearchTemplate' available
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:342)
Но почему это происходит? Я хочу использовать автоконфигурацию, я не хочу вручную описывать beans, как сказано в других ответах на stackoverflow!
Я использую Spring boot 2.3.1.RELEASE и Java 11
РЕДАКТИРОВАТЬ :
Моя конфигурация:
@Configuration
@EnableElasticsearchRepositories(basePackages = " com.example.elasticsearch.repository")
public class Config {
}
Мое приложение:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}