设为首页 收藏本站
查看: 1080|回复: 0

[经验分享] elasticsearch java api——客户端 org.elasticsearch.client

[复制链接]

尚未签到

发表于 2017-5-20 11:55:49 | 显示全部楼层 |阅读模式
  elasticsearch java api——客户端 org.elasticsearch.client
在elasticsearch源代码中,进入到org.elasticsearch.client,你会发现下图所示的类:
DSC0000.png
我们从最外层开始。
1 org.elasticsearch.client.AdminClient接口
AdminClient下有两个方法:
1) cluster(),产生一个允许从集群中执行action或操作的client;
2) indices(),产生一个允许从索引中执行action或操作的client。

AdminClient接口有两个实现类,分别为org.elasticsearch.client.AdminClient.NodeAdminClient和org.elasticsearch.client.transport.support.InternalTransportAdminClient。
1.1 org.elasticsearch.client.AdminClient.NodeAdminClient类
NodeAdminClient有一个带有@Inject注解的构造器,并实现了接口AdminClient的两个方法,如下所示:
[java] view plaincopy 
 



  • @Inject  
  • public NodeAdminClient(Settings settings, NodeClusterAdminClient clusterAdminClient, NodeIndicesAdminClient indicesAdminClient) {  
  •     super(settings);  
  •     this.indicesAdminClient = indicesAdminClient;  
  •     this.clusterAdminClient = clusterAdminClient;  
  • }  
  •   
  • @Override  
  • public IndicesAdminClient indices() {  
  •     return indicesAdminClient;  
  • }  
  •   
  • @Override  
  • public ClusterAdminClient cluster() {  
  •     return this.clusterAdminClient;  
  • }  

@Inject导致了一个直接的后果:你只能通过被@Inject标注的构造器生成实例。
  indices()和cluster()覆盖了AdminClient的同名方法,分别返回NodeIndicesAdminClient和NodeClusterAdminClient对象。

NodeAdminClient会继承父类org.elasticsearch.common.component.AbstractComponent的nodeName()方法用以获取当前节点的名称。
1.2 org.elasticsearch.client.transport.support.InternalTransportAdminClient类
InternalTransportAdminClient其实与NodeAdminClient类似,只是它的indices()和cluster()分别返回的是InternalTransportIndicesAdminClient和InternalTransportClusterAdminClient。
NodeAdminClient和InternalTransportAdminClient均没有子类,所以只有当我们需要用到NodeIndicesAdminClient、NodeClusterAdminClient、InternalTransportIndicesAdminClient或InternalTransportClusterAdminClient时,才考虑创建这两个类的实体。
2 org.elasticsearch.client.Client接口
Client为从集群中执行action或operation提供了一站式接口,这里的所有操作都是自然而然地异步执行的,每个action或operation都有两种风格,一种是简单地返回一个org.elasticsearch.action.ActionFuture,另一种是访问一个org.elasticsearch.action.ActionListener。你可以在org.elasticsearch.node.Node启动时取得一个Client,也可以使用org.elasticsearch.client.transport.TransportClient远程连接一个或多个节点。
Client有以下方法:
1) close(),关闭客户端;
2) admin(),返回一个可以执行管理性操作的客户端;
3) 两个execute,用于执行一般性操作,这里的一般性与上文提到的管理性相对;
4) prepareExecute,准备一个RequestBuilder对象,得到RequestBuilder对象后再做执行操作,当然,在这之间,你可以做一些个性化设置;
5) index(IndexRequest request),根据给写的index和type索引一个JSON资源,index和type由IndexRequest提供,IndexRequest也可提供id,若不提供时,id将自动生成;
6) index(IndexRequest request, ActionListener<IndexResponse> listener),与index(IndexRequest request)的区别在于它不会直接返回索引创建的结果,而是将结果转给监听器,由listener来通知请求者;
7) prepareIndex()、prepareIndex(String index, String type)、prepareIndex(String index, String type, @Nullable String id),准备创建索引,但不创建索引;
8) update(UpdateRequest request),基于一个script更新文档,返回更新后的结果;
9) update(UpdateRequest request, ActionListener<UpdateResponse> listener),更新,但不返回结果,而是交由监听器;
10) prepareUpdate()、prepareUpdate(String index, String type, String id),准备更新,但不执行更新;
11) delete(DeleteRequest request)、delete(DeleteRequest request, ActionListener<DeleteResponse> listener),根据DeleteRequest提供的index、type和id从索引中删除文档;
12) prepareDelete()、prepareDelete(String index, String type, String id),准备删除,但不执行删除;
13) bulk(BulkRequest request)、bulk(BulkRequest request, ActionListener<BulkResponse> listener),批量操作;
14) prepareBulk(),准备执行批量操作,但不执行;
15) deleteByQuery(DeleteByQueryRequest request)、deleteByQuery(DeleteByQueryRequest request, ActionListener<DeleteByQueryResponse> listener),基于查询删除索引;
16) prepareDeleteByQuery(String... indices),准备删除,但不执行删除;
17) get(GetRequest request)、get(GetRequest request, ActionListener<GetResponse> listener)根据GetRequest提供的index、type和id获取文档;
18) prepareGet()、prepareGet(String index, @Nullable String type, String id),准备获取,但不执行获取;
19) multiGet(MultiGetRequest request)、multiGet(MultiGetRequest request, ActionListener<MultiGetResponse> listener),批量获取文档;
20) prepareMultiGet(),准备批量获取,但不执行获取操作;
21) count(CountRequest request)、count(CountRequest request, ActionListener<CountResponse> listener),获取适应特定query的文档数量;
22) prepareCount(String... indices),准备获取适应特定query的文档数量,但不获取;
23) search(SearchRequest request)、search(SearchRequest request, ActionListener<SearchResponse> listener),根据SearchRequest提供的index、id和type执行搜索;
24) prepareSearch(String... indices),准备但不搜索;
25) searchScroll(SearchScrollRequest request)、searchScroll(SearchScrollRequest request, ActionListener<SearchResponse> listener)、prepareSearchScroll(String scrollId),通过用于迭代搜索结果;
26) multiSearch(MultiSearchRequest request)、multiSearch(MultiSearchRequest request, ActionListener<MultiSearchResponse> listener)、prepareMultiSearch(),执行多个搜索请求;
27) moreLikeThis(MoreLikeThisRequest request)、moreLikeThis(MoreLikeThisRequest request, ActionListener<SearchResponse> listener)、prepareMoreLikeThis(String index, String type, String id),类似于数据库中的like操作,先根据index、type、id找到一个document,再找到跟这个文档like的其他文档;
28) percolate(PercolateRequest request)、percolate(PercolateRequest request, ActionListener<PercolateResponse> listener)、preparePercolate(String index, String type),过滤一个请求,返回匹配的结果;
29) explain(ExplainRequest request)、explain(ExplainRequest request, ActionListener<ExplainResponse> listener)、prepareExplain(String index, String type, String id),为指定的请求计算一个score
 
参考文献:http://blog.csdn.net/geloin/article/details/8448691

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-379322-1-1.html 上篇帖子: ElasticSearch集群的安装和配置 下篇帖子: elasticsearch parent-child
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表