Elasticsearch的各种Java Client

本文简要梳理了 Elasticsearch 常见的 Java 客户端,包括官方的 Transport Client(已弃用)、High Level REST Client、全新的 Java API Client,帮助你快速理解各类客户端的演进路径,并为项目选型提供参考。
single

TransportClient-废弃

Transport Client 随着 Elasticsearch 的第一个版本诞生,是一个特别的客户端。特别之处在于,它使用 TCP 协议与 Elasticsearch 通信,这也造成了当客户端与不同版本的 Elasticsearch 通信时,会存在兼容性问题。详情请参见Motivations around a new Java client

7.0版本废弃,在8.0版本中将被删除,详情见:

Transport Client | Java Transport Client (deprecated) [7.17] | Elastic

Java Low Level REST Client-不维护

Elasticsearch Client 低级别客户端。它允许通过 HTTP 请求与 Elasticsearch 集群进行通信。API本身不负责数据的编码解码,由用户去编码解码。它与所有的 Elasticsearch 版本兼容。

对应的 maven 包:

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-client</artifactId>
    <version>7.9.3</version>
</dependency>

目前也不再更新,见官网说明:

Maven Repository | Java REST Client [7.9] | Elastic

Java High Level REST Client-不维护

Elasticsearch Client 官方高级客户端。基于低级客户端,主要目标是为了暴露各API特定的方法。Java High Level REST Client 依赖于 Elasticsearch 核心项目,将 Request 对象作为参数,返回一个Response 对象。所有API都可以同步或异步调用。

  • 同步调用方法立即返回一个Response对象。
  • 而异步调用方法(方法名以async结尾)依赖于监听,当有请求返回或是错误返回时,该监听会通知到对应的方法继续执行。

网上的资料大部分都是介绍这个客户端,不过7.15版本后不再推荐,也不再维护了。

详情见官网:

Java High Level REST Client | Java REST Client [7.9] | Elastic

maven 依赖:

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-client</artifactId>
    <version>${es.version}</version>
</dependency>
<!-- high-level client ,默认依赖的elasticsearch存在版本差异,排除后添加统一的es版本-->
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>${es.version}</version>
    <exclusions>
        <exclusion>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!-- 使用low-level client不需要,但是high-level client需要依赖-->
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>${es.version}</version>
</dependency>

Java API Client-官方推荐

具体用法见官网:

Installation | Elasticsearch Java API Client [8.13] | Elastic