ElasticSearch-java-client
2025-01-22 08:19:30    515 字   
This post is also available in English and alternative languages.

ElasticSearch版本:6.5.0(点击跳转官方文档)

elasticsearch java client 分为两种:

  • Java Low Level Rest Client(Java 低级客户端)

  • Java High Level Rest Client (Java 高级客户端)


1. Java Low Level Rest Client(Java 低级客户端)

通过Http协议与Elasticsearch服务进行通信;请求编码和响应解码保留给用户实现;低级客户端与所有Elasticsearch版本兼容。

Java Low Level Rest Client(Java 低级客户端)内部使用 Apache Http Async Client 发送 http 请求。

Apache Http Async Client默认启动一个调度线程,连接管理器使用多个worker线程,线程的数量和CPU核数量相同,线程数可以修改。

低级客户端包含以下功能:

  • 最小依赖
  • 负载均衡
  • 故障转移
  • 故障连续策略(是否重新连接故障节点取决于连续失败多少次;失败次数越多,在再次尝试同一个节点之前,客户端等待的时间越长)
  • 持久化连接
  • 跟踪记录请求和响应
  • 自动发现集群节点

2. Java High Level Rest Client (Java 高级客户端)

高级客户端 基于 低级客户端,提供特定的方法的API;

其主要目标是公开特定方法的API,接受请求对象作为参数并返回响应对象,以便客户端自己处理请求编组和响应解组。

每个API可以同步或异步地调用。

同步方法返回一个响应对象,而名称以 async 后缀结尾的异步方法需要收到响应或错误后才会通知(在低级别客户端管理的线程池上)的侦听器参数。


3. 实例Demo

1
2
3
4
5
6
7
8
9
10
11
public RestHighClient() {
try {
RestClientBuilder clientBuilder = RestClient.builder(HTTP_HOSTS);

//设置在多次重试同一请求时要遵守的最大超时(以毫秒为单位),默认30s
clientBuilder.setMaxRetryTimeoutMillis(5000);
restHighLevelClient = new RestHighLevelClient(clientBuilder);
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
}

4. 参考资料