- Elasticsearch实战与原理解析
- 牛冬
- 967字
- 2020-08-27 17:43:11
4.1 初级客户端初始化
在介绍如何使用初级客户端之前,我们先要了解初级客户端的主要功能,其主要功能包括:
(1)跨所有可用节点的负载平衡。
(2)在节点故障和特定响应代码时的故障转移。
(3)失败连接的惩罚机制。判断一个失败节点是否重试,取决于客户端连接时连续失败的次数;失败的尝试次数越多,客户端再次尝试同一节点之前等待的时间越长。
(4)持久连接。
(5)请求和响应的跟踪日志记录。
(6)自动发现群集节点,该功能可选。
在介绍完初级客户端的主要功能后,下面介绍初级客户端的使用。
1.获取客户端组件
首先,我们需要从Maven存储库中获取初级客户端的jar包。目前,初级客户端托管在Maven Central中央仓库中,其所需的Java最低版本为1.7。
需要指出的是,初级客户端保持了与Elasticsearch相同的发布周期。而客户端的版本和客户端可以通信的Elasticsearch的版本之间没有关系,即初级客户端可以与所有Elasticsearch版本兼容。
从Maven Central中央仓库,可以查到当前初级客户端的Maven依赖和Gradle依赖分别如下。
Maven依赖:
而elasticsearch-rest-client也是有依赖项的,这是因为是初级客户端内部需要使用Apache HTTP异步客户端发送HTTP请求,因此依赖于以下组件,即异步HTTP客户端及其自身的可传递依赖项,具体如下所示:
此时,工程中的POM文件(以Maven依赖为例)如下所示:
2.客户端初始化
用户可以通过相应的RestClientBuilder类来构建RestClient实例,该类是通过RestClient builder(HttpHost…)静态方法创建的。
RestClient在初始化时,唯一需要的参数是客户端将与之通信的一个或多个主机作为HttpHost实例提供的,如下所示:
对于RestClient类而言,RestClient类是线程安全的。在理想情况下,它与使用它的应用程序具有相同的生命周期。因此,当不再需要时,应该关闭它,以便释放它使用的所有资源及底层HTTP客户机实例及其线程,这一点很重要。关闭的方法如下所示:
下面通过一段代码展示初级客户端初始化的使用。代码分为3层,分别是Controller层、Service层和ServiceImpl实现层。
其中,Controller层的代码如下所示:
Service层的代码如下所示:
ServiceImpl实现层的代码如下所示:
在运行代码之前,首先启动Elasticsearch服务,启动后,输出内容如下所示。
然后编译工程,在工程根目录下输入如下命令:
接着通过下面的命令启动工程服务:
在工程服务启动后,在浏览器中调用如下接口查看Elasticsearch客户端的连接情况:
如图4-1所示。
图4-1
可以看到,浏览器页面输出了“Init ElasticSearch Over!”,即Elasticsearch客户端已经成功连接。
RestClientBuilder允许在构建RestClient时选择性地设置以下配置参数。
(1)请求头配置方法。
(2)配置监听器。
(3)配置节点选择器。
(4)设置超时时间。