API client有high level 和 low level。
Sniffer嗅探器
嗅探器, 可以自动间隔探测集群的节点情况并动态更新java es client中的承载节点。 要基于low level进行创建
① 概念:
从运行中的Elasticsearch集群自动发现节点并将它们设置为现有RestClient实例。
RestClient:low实例
② 版本: ES 5.0.0-alpha4发布
- Elasticsearch 2.x及更高版本(2.X~current version)
- 旧版本:client.transport.sniff
③ 依赖:
- Sniffer
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client-sniffer</artifactId>
<version>7.6.2</version>
</dependency>
-
RestClient:
org.elasticsearch.client elasticsearch-rest-client 7.6.2
④ 用法:
- 创建RestClient:RestClientBuilder
- HTTPS支持:NodesSniffer
- 绑定:Sniffer.builder(RestClient)
- 监听:SniffOnFailureListener
⑤ 设置参数:
- setSniffIntervalMillis:每隔多久触发一次嗅探,单位毫秒,默认30000(5分钟)。
- setSniffAfterFailureDelayMillis:嗅探失败时候触发嗅探一次 经过设置的时间(默认一分钟)之后再次嗅探,直至正常。如果没有绑定监听器则无效。
- setFailureListener:设置用于监听嗅探失败的监听器,当监听到普通嗅探失败,则通知Sniffer实例进行新一轮的嗅探,并更新节点。
⑥ 释放资源:注意释放嗅探器资源,关闭嗅探器必须在client关闭之前操作,即:
sniffer.close();
restClient.close();