有没有关于java elasticsearch libs和es发行版兼容性的信息?[关闭]

问题描述 投票:-1回答:1

我找过这个,但没有成功。我找到的所有东西都是 这个,它不包含任何关于与版本的兼容性的信息。java es libs.

java elasticsearch compatibility backwards-compatibility
1个回答
0
投票

这取决于你所说的 "客户端 "是什么意思。

历史的Java API

又名 "Java API",或 "传输客户端"。这个客户端从最早的版本开始就已经存在了。文件 :

TransportClient已被废弃,转而使用Java High Level REST Client,并将在Elasticsearch 8.0中被移除。迁移指南描述了迁移所需的所有步骤。

根据迁移指南,你最终会在 本页 (重点是我的)。

围绕一个新的Java客户端的动机

现有的TransportClient从第一次提交开始就已经是Elasticsearch的一部分了,它是一个特殊的客户端,因为它使用传输协议与Elasticsearch进行通信。它是一个特殊的客户端,因为它使用传输协议与Elasticsearch进行通信,这导致了 兼容性问题,如果客户机不在同一个版本上。 作为它对话的Elasticsearch实例。

结论:Java API客户端需要遵循服务器的版本。

Java低层客户端

2016年与ES 5.0一起推出的,低级客户端其实只是一个美化的原始HTTP客户端,通过一些技巧更好地集成到ES中。

第一个版本只包含了我们所说的低级客户端,它具有以下特点。

  • 兼容任何Elasticsearch版本
  • 在所有可用节点上进行负载均衡
  • 在节点故障时和特定的响应代码时进行故障切换。
  • 失联惩罚
  • 持久连接
  • 跟踪记录请求和响应
  • 可选的自动发现集群节点(也称为嗅探)。

由于它只真正处理HTTP级别的东西,低级客户端兼容所有版本。另一方面,它不能帮助你写格式化的JSON SearchDSL查询或管理查询,为此,你需要......高级客户端。

它之所以被称为低级客户端,是因为它几乎不能帮助Java用户建立请求或解析响应。它处理请求的路径和查询字符串构造,但它把JSON请求和响应体当作不透明的字节数组,必须由用户处理。

下一步是发布一个高级客户端,它接受适当的请求对象,处理它们的marshalling,并返回解析后的响应对象。

Java高级客户端

高层客户有一个 兼容性页.

长话短说:你应该使用一个至少等于集群版本的版本。滞后于一个次要版本通常是好的,但它不是预期。滞后一个主要版本可能无法工作,因为主要版本可能会引入API变化。

高层客户端保证能够与运行在相同主要版本和大于或等于次要版本的任何Elasticsearch节点通信。它不需要和它通信的Elasticsearch节点处于相同的小版本,因为它是向前兼容的,这意味着它支持和比它开发的版本更晚的Elasticsearch版本通信。

6.0客户端可以和任何6.x版本的Elasticsearch节点通信,而6.1客户端肯定可以和6.1、6.2以及任何6.x版本的更新版本通信,但是当和之前的Elasticsearch节点版本通信时,可能会出现不兼容的问题,例如6.1和6.0之间,如果6.1客户端支持一些6.0节点不知道的API的新请求体字段。

建议在将Elasticsearch集群升级到新的主要版本时,升级高层客户端,因为REST API的突破性变化可能会根据被请求击中的节点而导致意外的结果,而且新增加的API只有新版本的客户端才会支持。

© www.soinside.com 2019 - 2024. All rights reserved.