Я новичок в ElasticSearch, и мне хотелось бы иметь приложение Spring Boot, которое подключается к базе данных ElasticSearch 8.6, чтобы выполнять операции CRUD над индексом.
Я пытался создать CRUD-приложение, используя Spring Boot с базой данных ElasticSearch.
Entity:
@Document(createIndex = true, indexName = "client")
public class ClientEntity {
public ClientEntity() {
super();
}
@Id
private String id;
@Field(type = FieldType.Text, name = "name")
private String name;
@Field(type = FieldType.Long, name = "phoneNumber")
private Long phone;
Интерфейс репозитория из данных Spring:
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ClientRepository extends ElasticsearchRepository {
}
Конфигурация эластичного поиска:
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder.HttpClientConfigCallback;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.client.ClientConfiguration;
import org.springframework.data.elasticsearch.client.elc.ElasticsearchConfiguration;
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.json.jackson.JacksonJsonpMapper;
import co.elastic.clients.transport.ElasticsearchTransport;
import co.elastic.clients.transport.rest_client.RestClientTransport;
@Configuration
public class ConfigElasticSearch extends ElasticsearchConfiguration {
@Bean
public ElasticsearchTransport getElasticsearchTransport() {
return new RestClientTransport(getRestClient(), new JacksonJsonpMapper());
}
@Bean
public ElasticsearchClient getElasticsearchClient() {
ElasticsearchClient client = new ElasticsearchClient(getElasticsearchTransport());
return client;
}
@Override
public ClientConfiguration clientConfiguration() {
return ClientConfiguration.builder().connectedTo("localhost:9200")
.withBasicAuth("user", "my-password").build();
}
pom.xml:
org.springframework.boot
spring-boot-starter-parent
2.7.12
17
2021.0.5
0.9.1
3.1.1
org.modelmapper
modelmapper
${org-modelmapper.version}
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-data-elasticsearch
jakarta.json
jakarta.json-api
com.fasterxml.jackson.core
jackson-databind
Служба, использующая репозиторий Spring Data:
@Service("clientPersistence")
public class ClientPersistenceElasticSearchDb {
@Autowired
private ClientRepository clientRepository;
public Stream\ findAll() {
return StreamSupport.stream(this.clientRepository.findAll().spliterator(), false);
}
public Optional\ findById(String id) {
return clientRepository.findById(id);
}
}
Основная конфигурация моего микросервиса:
@SpringBootApplication
public class ClientMicroserviceApplication {
public static void main(String[] args) {
SpringApplication.run(EmpleadosMicroservicioApplication.class, args);
}
}
Если я запускаю свой микросервис, при запуске я получаю следующее (а затем микросервис зависает):
org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания bean-компонента с именем «clientPersistencia»: неудовлетворительная зависимость, выраженная через поле «clientRepository»; вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем «clientRepository», определенным в es.clientmicroservice.dao.clientRepository, определенном в @EnableElasticsearchRepositories, объявленном в ConfigElasticSearch: невозможно разрешить ссылку на bean-компонент «elasticsearchTemplate» при настройке свойства bean-компонента 'elasticsearchOperations'; вложенным исключением является org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания bean-компонента с именем «elasticsearchOperations», определенным в ресурсе пути к классу [es/clientmicroservice/config/ConfigElasticSearch .class]: неудовлетворенная зависимость, выраженная через параметр 1 метода «elasticsearchOperations»; вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем ElasticsearchClient, определенным в ресурсе пути к классу [es/clientmicroservice/config/ConfigElasticSearch.class]: не удалось создать экземпляр bean-компонента с помощью фабричного метода; вложенное исключение: org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [co.elastic.clients.elasticsearch.ElasticsearchClient]: фабричный метод ElasticsearchClient вызвал исключение; вложенным исключением является java.lang.NoClassDefFoundError: jakarta/json/spi/JsonProvider
Я не знаю, почему мой класс clientPersistence не создается из-за отсутствия зависимости JsonProvider.
Кто-нибудь может мне помочь?
Заранее спасибо!!
Подробнее здесь: https://stackoverflow.com/questions/763 ... g-spring-d
Проблема с подключением приложения Spring Boot к elasticsearch 8.6 с использованием данных Spring. ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Вложенные агрегаты Elasticsearch с данными Spring elasticsearch 5.2
Anonymous » » в форуме Elasticsearch aggregation - 0 Ответы
- 1216 Просмотры
-
Последнее сообщение Anonymous
-
-
-
[29.10.2024]Не удалось загрузить elasticsearch/elasticsearch с dist для PHP [дубликат]
Anonymous » » в форуме Php - 0 Ответы
- 157 Просмотры
-
Последнее сообщение Anonymous
-