Elasticsearch实战与原理解析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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)设置超时时间。