传输客户端已在 ES 8 中删除;高级别休息客户端已弃用并将被删除; ES 8 中使用了新的 Java API 客户端。
但是 .Net 自 2x 以来就拥有相同的高级 Elasticsearch .NET 客户端。为什么有这么多 ES java 客户端?
最佳答案
简而言之,由于历史原因,出现了一些 Java 客户端。
传输客户端使用 Elasticsearch 的传输协议(protocol),该协议(protocol)是节点相互通信的协议(protocol)。如果客户端与集群的版本不同,可能会出现兼容性问题。 Java 客户端是唯一使用传输协议(protocol)的客户端,而其他所有客户端都使用 http 协议(protocol)。
High Level Rest Client (HLRC) superseded the Transport client并使用http协议(protocol)。这是朝着正确方向迈出的一步,但是,客户端仍然依赖于 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 (alpha 版本):)
关于elasticsearch - 为什么有这么多 ES java 客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71701666/