elasticsearch api接口,elasticsearch client节点

  elasticsearch api接口,elasticsearch client节点

  

目录

客户端的继承关系方法实现上以指数方法为例执行方法代码总结:弹性搜索通过构造一个客户对外提供了一套丰富的爪哇岛调用接口。总体来说客户分为两类串信息方面的客户及数据(索引)方面的客户.这两个大类由可以分为通用操作和管理操作两类。

 

  

client的继承关系

(1.5版本,其它版本可能不一样):

 

  通过这个继承关系图可以很清楚的了解客户的实现,及功能。总共有三类即客户端,indicesAdminClient和ClusterAdminClient。它都有自己的实现类,但最后都是通过客户接口对外提供服务客户。作为对外的总接口,首先通过管理员()方法组合了管理的相关操作,它本身也提供了所有对数据和串的通用操作。

  

方法实现上

所有的接口都通过两种方式实现了异步调用,一个是返回一个行动未来,另外一种方式是接受一个ActionListener

 

  

以index方法为例

如下所示

 

  ActionFutureIndexResponse索引(索引请求请求);

  空索引(IndexRequest请求,ActionListenerIndexResponse侦听器);

  第一个方法会返回一个未来,第二个方法则需要传递一个听众.这也是异步实现的两个基本方式客户。使用了门面模式,所有的实现都在抽象客户端类中,还以指数方法为例,代码如下所示:

  @覆盖公共ActionFutureIndexResponse索引(最终索引请求请求){ return execute(IndexAction .实例,请求);} @覆盖公共空索引(最终索引请求请求,最终actionlistenereindexresponse侦听器){ execute(IndexAction .实例、请求、监听器);}实现如上所示,之所以说它是门面模式是因为所有的方法都被集成到了客户中,但是执行过程都是在对应的行为中执行。在执行方法中,获取到相应的行为实例,真正的逻辑是在对应的运输行动中实现。

  

execute方法代码

如下所示:

 

  @隐藏警告(未选中)@覆盖公共请求扩展操作请求,响应扩展ActionResponse,请求生成器扩展ActionRequestBuilderRequest,Response,RequestBuilder,Client ActionFutureResponse execute(action Request,Response,RequestBuilder,Client action,Request Request){ headers。适用于(请求);TransportActionRequest,Response传输操作=操作。get((客户端动作)动作);返回transportAction.execute请求);} @取消警告(未选中)@覆盖公共请求扩展操作请求,响应扩展ActionResponse,请求生成器扩展ActionRequestBuilderRequest,Response,RequestBuilder,Client void execute(action Request,Response,RequestBuilder,Client action,Request request,actionlistener响应侦听器){ headers。适用于(请求);TransportActionRequest,Response传输操作=操作。get((客户端动作)动作);transportAction.execute请求,监听器);}每一种操作都对应有相应的运输行动,这些运输行动才是最终的执行者。这里先以指数为例简单说明,在后面索引功能分析中会看到更多这种的结果。

  公共类IndexAction扩展ClientActionIndexRequest,IndexResponse,IndexRequestBuilder { public static final IndexAction INSTANCE=new IndexAction();public static final String NAME= indics : data/write/index ;private IndexAction(){ super(NAME);} @ Override public IndexResponse new response(){ return new IndexResponse();} @ Override public IndexRequestBuilder newRequestBuilder(Client客户端){ return new IndexRequestBuilder(Client);}}}在IndexAction中,它只是定义了一个名称和几个简单的方法。该名称将在启动时在TransportService中注册为transportHandler的键。在execute方法中,将根据前面代码中所示的操作取出transportAction。的真正执行逻辑在InternalTransportClient中,所以这里我们将跳过它的实现,稍后再进行详细的分析。所有这些动作的注册都是在actionModule中实现的,注册过程将在后面和动作一起分析。

  

总结:

客户端模块通过代理模式将所有操作集成到客户端界面中。这样,外部调用只需要初始化客户端就可以完成所有的调用功能。这些接口的执行逻辑在相应的transportAction中。这种精致的设计给用户带来了极大的便利。

 

  以上是elasticsearch构造客户端实现java客户端调用接口的实例分析的详细内容。更多关于elasticsearch构造java客户端调用接口客户端的信息,请关注热门IT的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: