繁体   English   中英

我可以在旧版本的Elasticsearch上使用新版本的Java高级别Rest客户端吗?

[英]Can I use newer version of java high level rest client on an older version of elasticsearch?

我们正在AWS上运行elasticsearch,该AWS当前支持最新版本的Elasticsearch 6.3。

我们有一个业务案例,需要每天更新索引中的所有文档并删除一个嵌套对象。 有Elasticsearch的按查询更新API ,可以解决我们的目的。

但是在我们的Java应用程序中,我们使用Java高级Rest客户。 其余客户端版本6.5支持通过查询api更新。 现在,如果将其余客户端升级到6.5,我们也需要在pom中升级elasticsearch版本。 否则,它们将不兼容。

    <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>

那么我们可以在我们的java服务中将client和elasticsearch版本升级到6.5并仍然使用elasticsearch 6.3吗? 我尝试了一下,它确实有效,但是只是想更彻底,因为我们不想破坏我们的数据。

编辑:通过查询更新在6.3中也可用,但是此api使用的旧版Transportclient应该很快就被弃用。

根据Elasticsearch的说法,

我们仅建议在升级过程中运行混合版本集群,而不是现状。 集群中具有较旧版本的节点或客户端会限制对较新功能的支持,因为较旧的客户端根本不知道如何以较新的二进制格式写入或读取请求。

这也应该反过来适用(旧ES版本的新客户端)

此外,@ Samuel Kok指出的本建议书还指出:

一旦集群中的所有节点都已升级到新的主要版本,客户端应始终最后更新。

基于弹性搜索文档

确保高级客户端能够与在相同主要版本和较大或相等的次要版本上运行的任何Elasticsearch节点进行通信。

6.0客户端可以与任何6.x Elasticsearch节点进行通信,而6.1客户端可以与6.1、6.2和任何更高版本的6.x版本进行通信, 但是与先前的Elasticsearch节点进行通信时可能会出现不兼容问题如果6.1客户端支持6.0节点不知道的某些API的新请求正文字段,则版本介于6.1和6.0之间。

换句话说,Java Rest Client应该永远不会比Elasticsearch节点新。

对于您的情况,强烈建议您也将Elastic Search升级到6.5或将Java Rest Client降级到6.3。

6.3中还提供了“按查询更新”功能,因此我看不到为什么需要使用Java Rest Client 6.5版。 除非我不知道6.5中发布的“按查询更新的API”中有一些新功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM