分布式搜索Elasticsearch——创建客户端(五)

来源:互联网 发布:熊猫书院骗局知乎 编辑:程序博客网 时间:2024/06/06 01:00

org.elasticsearch.client.Client的子类结构如下图所示:

org.elasticsearch.client.internal.InternalClient接口在Client接口的基础上,添加了一个settings()方法,用于获取当前客户端的Settings。

org.elasticsearch.client.support.AbstractClient实现了InternalClient类,你注意观察一下,会发现AbstractClient里面的所有方法中,除了prepareXxx方法,其他方法最后都跳转到其子类的execute方法中,而prepareXxx方法则在execute之前执行,进行相关属性的指定或设置。

AbstractClient有两个子类,分别是org.elasticsearch.client.transport.support.InternalTransportClient和org.elasticsearch.client.node.NodeClient,这两个类都重写了父类的close()、settings()、threadPool()、admin()和execute等方法,其中,close()方法如下所示:

[java] view plaincopy
  1. @Override  
  2. public void close() {  
  3.     // nothing to do here  
  4. }  
也就是说,这两个类都不执行close操作。

这两个方法唯一的区别在于其针对的操作对象不同,InternalTransportClient针对的是内部传输,而NodeClient则针对节点间操作。

两个类都实现了一个被"@Inject"注解了的构造子,导致实例化这两个类时,只能通过该构造子,而不能使用其他方式。

execute方法的实现我将在后续分析,此处不赘述。


org.elasticsearch.client.ClusterAdminClient和org.elasticsearch.client.IndicesAdminClient的类结构与AdminClient的类结构相似,其中,ClusterAdminClient的类结构如下所示:


IndicesAdminClient的类结构如下所示:


0 0
原创粉丝点击