Я новичок в 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
Программисты JAVA общаются здесь
1722183346
Anonymous
Я новичок в 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.
Кто-нибудь может мне помочь?
Заранее спасибо!!
Подробнее здесь: [url]https://stackoverflow.com/questions/76396251/issue-connecting-a-spring-boot-application-with-elasticsearch-8-6-using-spring-d[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия