RestHighLevelClient Bean для эластичного поиска не найден в пути к классам в весенней загрузке 3

Я пытаюсь обновить свой существующий проект Spring Boot 2.7.x до Spring Boot 3.x.x. Я разобрал все, кроме этой ошибки при запуске приложения.


ПРИЛОЖЕНИЕ НЕ ЗАПУЩЕНО


Описание:

Для параметра 0 метода lockProvider в com.cox.config.ShedLockConfiguration требуется bean-компонент типа org.elasticsearch.client.RestHighLevelClient, который не может быть найден.

Действие:

Рассмотрите возможность определения bean-компонента типа org.elasticsearch.client.RestHighLevelClient в вашей конфигурации.

Процесс завершен с кодом выхода 0

Используемая версия Spring Boot — 3.0.0. Я знаю, что RestHighLevelClient устарел, но в документации говорится, что он все еще доступен в spring-data-elasticsearch.

Попытался обновить все зависимости для совместимости с Spring Boot 3.

Обновлять: Также появляется ошибка ниже для другого компонента с эластичным поиском, который я пытаюсь обновить до весенней загрузки 3.


ПРИЛОЖЕНИЕ НЕ ЗАПУЩЕНО


Описание:

Для параметра 2 конструктора в com.cox.service.esindex.EsIndexRefreshService требуется bean-компонент типа org.springframework.data.elasticsearch.core.ElasticsearchOperations, который не может быть найден.

Действие:

Рассмотрите возможность определения bean-компонента типа org.springframework.data.elasticsearch.core.ElasticsearchOperations в вашей конфигурации.

Похоже, что spring boot больше не создает bean-компоненты для устаревших методов/классов. Не могли бы вы помочь мне сопоставить каждый устаревший метод/класс с новым spring-data-elasticsearch

Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Интеграция Slack и Spring Boot: как отправлять сообщения из Java-приложений
Интеграция Slack и Spring Boot: как отправлять сообщения из Java-приложений
Как отправлять сообщения в slack с помощью spring boot легко и без зависимостей.
0
0
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В документации прямо указано:

Старый устаревший RestHighLevelClient все еще можно использовать, но вам нужно будет явно добавить зависимость в свое приложение, поскольку Spring Data Elasticsearch больше не извлекает ее автоматически:

Изменить 18.02.2023:

Ознакомьтесь с документацией в ней также описано, как настраивать различные клиенты. Вам придется выполнить эту настройку самостоятельно, я не думаю, что Spring Boot настроит это автоматически, они используют текущий материал из Spring Data Elasticsearch.

Я добавил следующую зависимость в соответствии с документом, но все равно появляется та же ошибка. Должен ли я добавить какую-либо конфигурацию для автоматического предоставления bean-компонентов? <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId‌​> <version>7.17.6</version> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency>

user9413579 17.02.2023 06:22

Однако мой кластер elasticsearch находится на удаленном сервере с хостом https, который отказывается подключаться с этой ручной конфигурацией. До этого весеннего обновления загрузки spring автоматически создавал RestHighLevelClient без какой-либо настройки и успешно подключался к удаленному https elasticsearch. Если вы знаете какие-либо возможные способы решения этой проблемы, дайте мне знать.

user9413579 20.02.2023 06:52

Получение ошибки ниже. Вызвано: java.net.UnknownHostException: такой хост не известен (https://[url эластичного поискового узла]:9200) в java.base/java.net.Inet6AddressImpl.lookupAllHostAddr (собственный метод) в java .base/java.net.InetAddress$PlatformNameService.lookupAll‌​HostAddr(InetAddress‌.java:933) в java.base/java.net.InetAddress.getAddressesFromNameService(I‌​netAddress.java:1529‌​)

user9413579 20.02.2023 13:24

Хорошо, я решил эту ошибку, добавив параметр .usingSsl(), однако по умолчанию он добавляет 9200, что вызывает ошибку тайм-аута. Мне не нужно добавлять номер порта в URL-адрес моего кластера elasticsearch. Любая идея, как добиться такого поведения?

user9413579 20.02.2023 13:59

Добавить порт 443?

P.J.Meisch 21.02.2023 18:25

Спасибо, что добавление 443 в качестве порта обеспечивает успешное подключение к эластичному поиску. Но теперь столкнулся с другой ошибкой, для которой я поднял еще один вопрос здесь: stackoverflow.com/questions/75528682/…

user9413579 22.02.2023 06:47

Другие вопросы по теме