为什么有这么多 ES java 客户?
why are there so many ES java clients?
传输客户端已在 ES 8 中移除;高级休息客户端已弃用并将被删除; ES 8 中使用了新的 Java API 客户端。
但是 .Net 自 2x 以来具有相同的高级 Elasticsearch .NET 客户端。为什么有这么多 ES java 客户?
简而言之,由于 历史 原因,有几个 Java 客户。
传输客户端使用Elasticsearch的传输协议,节点之间使用该协议进行通信。如果客户端与集群的版本不同,则可能会出现兼容性问题。 Java 客户端是唯一使用传输协议的客户端,而其他所有客户端都使用 http 协议。
High Level Rest Client (HLRC) superseded the Transport client并且使用了http协议。这是朝着正确方向迈出的一步,但是,客户端仍然依赖于 Elasticsearch 的类型。
新的 Java 客户端取代了 HLRC,并且是 completely decoupled from Elasticsearch。客户端的大部分 API 表面都是从 API 规范生成的,提供更易于维护和一致的 API 表面。
顺便说一句,虽然自 1.x 以来一直有用于 .NET 客户端(Elasticsearch.Net 和 NEST)的一致 Nuget 包,但客户端在这段时间内经历了相当多的演变,在主要版本之间进行重大更改。 There's a new .NET for 8.x too(测试版):)
传输客户端已在 ES 8 中移除;高级休息客户端已弃用并将被删除; ES 8 中使用了新的 Java API 客户端。
但是 .Net 自 2x 以来具有相同的高级 Elasticsearch .NET 客户端。为什么有这么多 ES java 客户?
简而言之,由于 历史 原因,有几个 Java 客户。
传输客户端使用Elasticsearch的传输协议,节点之间使用该协议进行通信。如果客户端与集群的版本不同,则可能会出现兼容性问题。 Java 客户端是唯一使用传输协议的客户端,而其他所有客户端都使用 http 协议。
High Level Rest Client (HLRC) superseded the Transport client并且使用了http协议。这是朝着正确方向迈出的一步,但是,客户端仍然依赖于 Elasticsearch 的类型。
新的 Java 客户端取代了 HLRC,并且是 completely decoupled from Elasticsearch。客户端的大部分 API 表面都是从 API 规范生成的,提供更易于维护和一致的 API 表面。
顺便说一句,虽然自 1.x 以来一直有用于 .NET 客户端(Elasticsearch.Net 和 NEST)的一致 Nuget 包,但客户端在这段时间内经历了相当多的演变,在主要版本之间进行重大更改。 There's a new .NET for 8.x too(测试版):)