Могу ли я использовать старый spring-data-elasticsearch для подключения к новому эластичному поиску?

В настоящее время мы используем spring-data-elasticsearch 3.2.6 + elasticsearch 6.8. Мы переходим на новую версию elasticsearch 7.x. Нужно ли обновлять spring-data-elasticsearch до 4.x? Мы используем ElasticsearchRepository только в spring-data-elasticsearch. И нам не нужно использовать какую-либо новую функцию в elasticsearch 7.x.

Если в будущем мы перейдем на elasticsearch 8.x, нужно ли мне обновлять spring-data-elasticsearch?

Обновлять:

Какой клиент Elasticsearch использует Spring-Data-Elasticsearch?

Все методы в ElasticsearchRepository устарели. Что я должен использовать?

Я нашел несколько обсуждений в вышеуказанных темах. Вот мое резюме.

  1. Операции с шаблонами:

ElasticsearchШаблон реализует ElasticSearchOperation. Он использует TransportClient (который устарел в ES 7 и был удален в ES8).

ElasticsearchRestTemplate реализует ElasticSearchOperation. Он использует клиент высокого уровня (который устарел в ES 7.16.0. Он будет удален в будущем. @Deprecated(since = "7.16.0", forRemoval = true))

Шаблон ReactiveElasticsearch реализует ReactiveElasticsearchOperations. Он использует реактивный клиент.

  1. Репозиторий

ElasticsearchRepository по умолчанию использует TransportClient. Все методы в ElasticsearchRepository устарели.

Реактивный репозиторий Elasticsearch основан на ReactiveElasticsearchOperations.


Из-за того, что базовый TransportClient или HigLevelRestClient устарел, могу ли я сделать вывод, что правильный способ — использовать Reactive Client (ReactiveElasticsearchTemplate или репозиторий Reactive Elasticsearch)?

Матрицу совместимости версий можно найти здесь: docs.spring.io/spring-data/elasticsearch/docs/current/refere‌​nce/… Учитывая то, как устроен мир Spring, всегда лучше соблюдать требования совместимых версий.

Val 24.03.2022 17:12
0
1
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

новый Elasticsearch будет равен 8.

Вал уже давал ссылку на матрицу совместимости в своем комментарии.

Версия 3.2.6 довольно устарела (25 марта 2020 г.) и не поддерживается с октября 2020 г.

Первое, что вы можете попробовать, это посмотреть, работает ли ваше приложение с 7 кластером — хотя я в этом сомневаюсь, я не могу вам точно сказать, что изменилось в API, но кое-что было.

Что вам следует сделать нет, так это поместить более новые библиотеки Elasticsearch в путь к классам, чем те, с которыми был создан Spring Data Elasticsearch, в большинстве случаев это вызовет проблемы.

Но я бы рекомендовал в любом случае обновить ваше приложение и регулярно обновлять его.

Что касается будущего обновления до версии 8: в ваших запросах можно отправлять заголовок совместимости (это можно сделать в Spring Data Elasticsearch 4), и кластер Elasticsearch должен отвечать в формате, совместимом с клиентом, ожидающим версию 7. Я написал должен, потому что это не соответствует этому в каждом случае - я сообщил об одном случае, который сейчас исправлен. Но я бы не стал на это полагаться.

Опять же, пожалуйста, обновите свое приложение и поддерживайте его в актуальном состоянии не только из-за Spring Data Elasticsearch, но и потому, что эти обновления всегда содержат исправления ошибок и/или безопасности.

Спасибо за ваш ответ! За последние годы было так много разных клиентов ES. Я не мог найти хороший источник обо всех изменениях. Надеюсь, эта тема поможет тем, кто столкнулся с такой же проблемой.

yulinxp 25.03.2022 15:00

Да, это довольно быстро меняющийся мир. Что касается перехода на новый поисковый клиент Elastic при использовании Spring Data Elasticsearch: мы стараемся сделать это как можно более плавным для пользователя, в идеальном случае мы можем переключить используемый клиент без необходимости пользователю изменять код.

P.J.Meisch 26.03.2022 12:42

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