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