Могу ли я использовать более новую версию Java-клиента высокого уровня отдыха на более старой версииasticsearch? - PullRequest
0 голосов
/ 30 ноября 2018

Мы работаем сasticsearch на AWS, который в настоящее время поддерживает эластичную версию 6.3 в качестве последней версии.

У нас есть бизнес-пример, в котором нам необходимо обновлять все документы в индексе и ежедневно удалять один вложенный объект.Существует Update по запросу API-интерфейса asticsearch, который решит нашу задачу.

Но в нашем Java-приложении мы используем Java-клиент высокого уровня отдыха.Обновление по запросу API поддерживается rest клиентской версией 6.5 .Теперь, если мы обновим оставшийся клиент до версии 6.5, нам нужно будет обновить версиюasticsearch в нашем pom.В противном случае они несовместимы.

    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>elasticsearch-rest-high-level-client</artifactId>
        <version>${elasticsearch.version}</version>
    </dependency>

    <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>${elasticsearch.version}</version>
    </dependency>

Итак, можем ли мы обновить версию клиента иasticsearch до 6.5 в нашем java-сервисе и при этом использовать эластичный поиск 6.3?Я попробовал это, и это работает, но просто хочу быть тщательным, поскольку мы не хотим, чтобы наши данные были повреждены.

Редактировать: Обновление по запросу также доступно в 6.3 , но этоapi использует более старый Transportclient, который скоро должен быть устаревшим.

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

На основе Elastic Search Документация

Клиент высокого уровня гарантированно сможет обмениваться данными с любым узлом Elasticsearch, работающим на той же основной версии и большей или равной младшейversion.

Клиент 6.0 может обмениваться данными с любым узлом 6.x Elasticsearch, в то время как клиент 6.1 наверняка может обмениваться данными с 6.1, 6.2 и более поздней версией 6.x, , но естьмогут возникнуть проблемы несовместимости при взаимодействии с предыдущей версией узла Elasticsearch , например между 6.1 и 6.0, в случае, если клиент 6.1 поддерживает новые поля тела запроса для некоторых API, которые не известны узлам 6.0.

Другими словами, Java Rest Client никогда не должен быть новее, чем узел Elasticsearch.

В вашем случае настоятельно рекомендуется либо обновить Elastic Search до версии 6.5, либо понизить версиюваш Java Rest Client обратно на 6.3.

Обновленный по запросу доступен в 6.3 какну, поэтому я не понимаю, почему вам нужно использовать версию 6.5 Java Rest Client.Если в API Updated By Query, который выпущен в 6.5, нет новых функций, о которых я не знаю.

0 голосов
/ 30 ноября 2018

Согласно Elasticsearch ,

запуск кластера смешанной версии - это то, что мы рекомендуем только в процессе обновления, а не в качестве статус-кво.Наличие более старых версий узлов или клиентов в кластере ограничивает поддержку более новых функций, поскольку более старый клиент просто не знает, как писать или читать запросы в более новом двоичном формате.

Это также должноприменять наоборот (более новый клиент для старой версии ES)

В дополнение, в этой Рекомендации , отмеченной @Samuel Kok, говорится:

Клиент всегда должен обновляться последним, когда все узлы кластера обновлены до новой основной версии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...