В настоящее время мы используем 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 устарели. Что я должен использовать?
Я нашел несколько обсуждений в вышеуказанных темах. Вот мое резюме.
ElasticsearchШаблон реализует ElasticSearchOperation. Он использует TransportClient (который устарел в ES 7 и был удален в ES8).
ElasticsearchRestTemplate реализует ElasticSearchOperation. Он использует клиент высокого уровня (который устарел в ES 7.16.0. Он будет удален в будущем. @Deprecated(since = "7.16.0", forRemoval = true))
Шаблон ReactiveElasticsearch реализует ReactiveElasticsearchOperations. Он использует реактивный клиент.
ElasticsearchRepository по умолчанию использует TransportClient. Все методы в ElasticsearchRepository устарели.
Реактивный репозиторий Elasticsearch основан на ReactiveElasticsearchOperations.
Из-за того, что базовый TransportClient или HigLevelRestClient устарел, могу ли я сделать вывод, что правильный способ — использовать Reactive Client (ReactiveElasticsearchTemplate или репозиторий Reactive Elasticsearch)?
новый 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. Я не мог найти хороший источник обо всех изменениях. Надеюсь, эта тема поможет тем, кто столкнулся с такой же проблемой.
Да, это довольно быстро меняющийся мир. Что касается перехода на новый поисковый клиент Elastic при использовании Spring Data Elasticsearch: мы стараемся сделать это как можно более плавным для пользователя, в идеальном случае мы можем переключить используемый клиент без необходимости пользователю изменять код.
Матрицу совместимости версий можно найти здесь: docs.spring.io/spring-data/elasticsearch/docs/current/reference/… Учитывая то, как устроен мир Spring, всегда лучше соблюдать требования совместимых версий.