本章节为您介绍Elasticsearch(简称ES)的Java High Level Rest Client的原理、版本兼容性以及使用示例,帮助您快速地使用Java客户端与阿里云Elasticsearch服务器进行交互,完成检索、分析等相关业务。

TransportClient迁移至REST Client

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

ES官网于2016年发布Low Level REST客户端,该客户端基于Apache HTTP客户端,允许通过HTTP协议与任何版本的ES集群通信。在Low Level REST客户端的基础上,ES发布了High Level REST Client。

Elasticsearch 7.0中已经弃用TransportClient,在8.0中完全移除它。因此在实际开发中建议您使用Java REST Client。Rest Client通过HTTP请求,帮助您处理请求和返回的序列化问题,为您的业务开发带来便捷。

Java REST客户端

Java REST客户端有两种风格:
  • Java Low Level REST Client:Elasticsearch Client低级别客户端。它允许通过http请求与Elasticsearch集群进行通信。API本身不负责数据的编码解码,由用户去编码解码。它与所有的ElasticSearch版本兼容。
  • Java High Level REST Client(本章节以此为例):Elasticsearch Client官方高级客户端。基于低级客户端,主要目标是为了暴露各API特定的方法。Java High Level REST Client依赖于Elasticsearch核心项目,将Request对象作为参数,返回一个Response对象。所有API都可以同步或异步调用。
    • 同步调用方法立即返回一个Response对象。
    • 而异步调用方法(方法名以async结尾)依赖于监听,当有请求返回或是错误返回时,该监听会通知到对应的方法继续执行。

本章节主要为您讲解6.3.x和6.7.x版本的Java High Level REST Client的用法,详情请参见Java REST Client(6.3.x)Java REST Client(6.7.x)

参考文档:Elasticsearch使用指南(云栖社区)