java - 我可以在旧版本的 elasticsearch 上使用更新版本的 java 高级休息客户端吗?

标签 java elasticsearch elasticsearch-java-api

我们在 AWS 上运行 elasticsearch,目前支持 elasticsearch 6.3 作为最新版本。

我们有一个业务案例,我们需要每天更新索引中的所有文档并删除一个嵌套对象。 有elasticsearch的Update by query API这将解决我们的目的。

但在我们的 Java 应用程序中,我们使用的是 Java 高级休息客户端。 rest client version 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服务中将客户端和elasticsearch版本升级到6.5,并且仍然使用elasticsearch 6.3? 我试过了,它确实有效,但我不想让我们的数据被破坏,所以我只想彻底。

编辑: 6.3 中也提供了按查询更新但此 api 使用较旧的 Transportclient,它应该很快就会被弃用。

最佳答案

根据 Elasticsearch ,

running a mixed version cluster is something we only recommend during the upgrade process, not as the status quo. Having older versions of nodes or clients in the cluster limits the support of newer features, as the older client simply doesn't know how to write or read requests in the newer binary format.

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

此外,在这个Recommendation ,@Samuel Kok 指出:

The client should always be updated last, once all of the nodes in the cluster have been upgraded to the new major version.

关于java - 我可以在旧版本的 elasticsearch 上使用更新版本的 java 高级休息客户端吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53554328/

相关文章:

java - 如何在 Spring-data-elasticsearch 中启用查询日志记录

ElasticSearch - 字符串字段长度的统计方面

java - 检查Elasticsearch文档是否存在给定值的最有效方法

java - 如何从稍后要完成的事务中提取更新?

java - flutter 医生结果为 "cmdline-tools component is missing"

java - 当我启动类(class)时,值没有被传递

python - 使用python查询elasticsearch时无响应

elasticsearch - 如何通过 JSON 将查询设置为 Elasticsearch SearchRequest?

java - 使用 Java 更新 elasticsearch 中的多个文档。我正在使用 Elasticsearch 2.3.2

java - 如何使用 hibernate 查询语言从 oneToMany 表中获取最大值