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

Elasticsearch的各种Java Client

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

Elasticsearch的各种Java Client

Vitah Lin

创建于 更新于 3 分钟阅读

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 包:

JAVA
<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 依赖:

XML
<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