您的位置:首页 > 其它

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

2013-01-09 13:22 363 查看
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()方法如下所示:

@Override
public void close() {
// nothing to do here
}
也就是说,这两个类都不执行close操作。

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

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

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

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



IndicesAdminClient的类结构如下所示:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: