2024-03-13
原文作者:吴声子夜歌 原文地址: https://blog.csdn.net/cold___play/article/details/133948862

Elasticsearch Java API

Java 操作 Es 的方案有如下几种,根据Elasticsearch版本的不同要选择对应的客户端。

1、直接使用HTTP请求

Elasticsearch提供Rest API,所以可以直接直接使用 HTTP 请求,去操作 Es。HTTP 请求工具,可以使用 Java 自带的 HttpUrlConnection,也可以使用一些 HTTP 请求库,例如 HttpClient、OKHttp、Spring 中的 RestTemplate 都可以。这种方式有一个弊端,就是要自己组装请求参数,自己去解析响应的 JSON。

2、Low Level REST Client

Elasticsearch Client低级别客户端。它允许通过HTTP请求与Elasticsearch集群进行通信。API本身不负责数据的编码解码,由用户去编码解码。它与所有的Elasticsearch版本兼容。这种方式好处就是兼容所有的 Es 版本。但是就是数据处理比较麻烦。

3、Java High Level REST Client

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

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

注意:这种方式,所使用的依赖库的版本要和 Es 对应。

4、TransportClient

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

Elasticsearch 7.0中已经弃用Transport Client,在8.0中完全移除它。

5、Java API Client

Elasticsearch在7.17版本之前使用的Java客户端是Java REST Client,从7.17版本开始Elastic官方将Java REST Client标记为弃用(deprecated),并推荐使用新版Java客户端Java API Client。

Java API Client是一个用于与Elasticsearch服务器进行通信的Java客户端库,帮助开发人员与Elasticsearch服务器进行通信,开发人员可以更加轻松地开发和维护代码。

Java API Client主要包含三个部分:

  • ElasticsearchClient类:Java API Client的核心类,提供与Elasticsearch服务器进行通信的方法。该类封装了底层的Transport通信,并提供了同步和异步调用、流式和函数式调用等方法。
  • JSON object mapper:处理数据序列化和反序列化的库。JSON object mapper与Jackson无缝集成,可以将Java对象映射到JSON格式。
  • 通用能力:提供了连接池、重试、JSON序列化等通用能力,提高了代码的可读性和可维护性,便于开发人员进行开发。
阅读全文