| client.transport.nodes_sampler_interval | 对连接节点发送ping命令的频率,默认为5s,即常说的心跳检测间隔时间。 |
接下来重点描述一下client.transport.sniff参数,集群群嗅探机制。
在创建TransportClient时可以通过addTransportAddress来静态的增加ElasticSearch集群中的节点,如果开启集群群嗅探机制,即开启节点动态发现机制,允许动态添加和删除节点。当启用嗅探功能时,首先客户端会连接addTransportAddress中的节点上。在此之后,客户端将调用这些节点上的内部集群状态API来发现可用的数据节点。客户端的内部节点列表将仅被发现的数据数据节点替换。默认情况下,这个列表每5秒刷新一次。也就意味着如果该节点不是数据节点,则列表可能不包括它连接的原始节点。例如,如果您最初连接到一个主节点,在嗅探之后,如果发现了有其对应的数据节点,则不会再向该主节点发出请求,而是向任何数据节点发出请求。传输客户端排除非数据节点的原因是为了避免只向主节点发送搜索流量。
使用配置构建Settings构建TransportClient对象代码如下:
Settings settings = Settings.builder()
.put(“cluster.name”, “myClusterName”)
.put(“client.transport.sniff”, “true”).build();
TransportClient client = new PreBuiltTransportClient(settings)
.addTransportAddress(new TransportAddress(InetAddress.getByName(“192.168.1.10”), 9300)) ;
//Add transport addresses and do something with the client…
2.2、TransportClient API
TransportClient 的核心类继承图如下:
上述API的设计要点:
整个客户端API提供两个最底层的方法,execute,其关键特征如下:
- ActionFuture execute(Action<Request, Response, RequestBuilder> action, Request request);
返回ActionFuture,根据名称即可知道,该方法是典型的异步调用,Future模式。
- void execute(Action<Request, Response, RequestBuilder> action, Request request, ActionListener listener);
无返回值,但需要传入ActionListener listener,同样根据名称即可知道,该参数的作用是事件监听器(回调方法),也就是收到服务端响应后,调用回调函数,进行结果处理。
注意:ElasticSearch Client API 其本质是使用异步请求模式。
- prepare 开头的方法,例如IndexRequestBuilder prepareIndex()
这类API的设计是使用Build模式,先通过build构建请求参数,最终会通过调用get()方法完成接口调用。
TransportClient Api就先解释到这里了,后续会详细对上述API进行分类详解。
2.3 Maven依懒
org.elasticsearch.client
transport
6.4.1
org.apache.logging.log4j
log4j-core
2.11.1
3、Java Rest Client详解
Java REST客户端有两种风格:
-
Java Low Level REST Client:elasticsearch client 低级别客户端。它允许通过http请求与Elasticsearch集群进行通信。API本身不负责数据的编码解码,由用户去编码解码。它与所有的ElasticSearch版本兼容。
-
Java High Level REST Client:Elasticsearch client官方高级客户端。基于低级客户端,它定义的API,已经对请求与响应数据包进行编码解码。
3.1 Java High Level REST Client
3.1.1 初始化
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost(“localhost”, 9200, “http”),
new HttpHost(“localhost”, 9201, “http”)));
// close
client.close();
new HttpHost(“localhost”, 9200, “http”)其机制与TransportClient的addTransportAddress的作用一致。
3.1.2 核心API依懒
RestHighLevelClient 的类图 如下:
其API设计具有如下特征:
-
每个API提供同步与异步调用,方法名以async结尾的方法为异步调用,需要提供对应的ActionListener实现。
-
每个API都可以提供RequestOptions对象来定制请求选型。
本节将不会对上述API一一介绍,上述API会在后续文章中详细解析。
3.1.3 Maven依懒
org.elasticsearch.client
elasticsearch-rest-client
6.4.0
org.elasticsearch.client
elasticsearch-rest-high-level-client
6.4.0
pom
本文就先介绍到这里了,详细分析介绍了Elasticsearch两大客户端 TransportClient与RestHighLevelClient ,后续文章会详细介绍各个API,例如文档的索引、更新、查询、删除、批量查询,Search API等。
见文如面,我是威哥,热衷于成体系剖析JAVA主流中间件,关注公众号『中间件兴趣圈』,回复专栏可获取成体系专栏导航,回复资料可以获取笔者的学习思维导图。
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!