`

Elasticsearch 创建客户端(一)

阅读更多

原文链接:http://blog.csdn.net/geloin/article/details/8448691

 

在elasticsearch源代码中,进入到org.elasticsearch.client,你会发现下图所示的类:


 

我们从最外层开始。

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的两个方法,如下所示:

@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.3.1版本里看到的org.elasticsearch.client.AdminClient接口仅一个实现类,且还是org.elasticsearch.client.support.AbstractClient中的静态内部类,

而org.elasticsearch.client.node.NodeClient + org.elasticsearch.client.transport.TransportClient为AbstractClient的子类)

{
     static class Admin implements AdminClient {

        private final ClusterAdmin clusterAdmin;
        private final IndicesAdmin indicesAdmin;

        public Admin(ElasticsearchClient client) {
            this.clusterAdmin = new ClusterAdmin(client);
            this.indicesAdmin = new IndicesAdmin(client);
        }

        @Override
        public ClusterAdminClient cluster() {
            return clusterAdmin;
        }

        @Override
        public IndicesAdminClient indices() {
            return indicesAdmin;
        }
    }
}

 

 

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有以下方法:(注:如下使用了中划线的为2.3.1中已不存在的方法)

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),准备创建索引,及索引/类型/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。

30) clearScroll(ClearScrollRequest request)、clearScroll(ClearScrollRequest request, ActionListener<ClearScrollResponse> listener)、prepareClearScroll(),清除与指定ID相关的搜索上下文。

 

31) deleteIndexedScript(DeleteIndexedScriptRequest request)、deleteIndexedScript(DeleteIndexedScriptRequest request,ActionListener<DeleteIndexedScriptResponse> listener),删除索引。

 

32) fieldStats(FieldStatsRequest request)、fieldStats(FieldStatsRequest request, ActionListener<FieldStatsResponse> listener),字段统计,prepareFieldStats()准备字段统计

 

33) getIndexedScript(GetIndexedScriptRequest request)、getIndexedScript(GetIndexedScriptRequest request, ActionListener<GetIndexedScriptResponse> listener),通过index、type、ID获取被索引的文档。

 

34) Headers headers(); 头信息

 

35) multiPercolate(MultiPercolateRequest request)、multiPercolate(MultiPercolateRequest request, ActionListener<MultiPercolateResponse> listener),批量过滤请求。

 

36) multiTermVectors(MultiTermVectorsRequest request)、multiTermVectors(MultiTermVectorsRequest request, ActionListener<MultiTermVectorsResponse> listener);获取多个条件向量

 

37) prepareMultiGet() 准备获取多个文档;prepareMultiPercolate()准备过滤过个请求;

 

38) prepareSuggest()、suggest(SuggestRequest request)、suggest(SuggestRequest request, ActionListener<SuggestResponse> listener);匹配特定的短语

 

39) settings()返回客户端的设置信息

 

 

  • 大小: 43.5 KB
分享到:
评论

相关推荐

    elasticsearch java客户端Jest入门实例

    第一步:启动一个elasticsearch服务,bin目录下的elasticsearch.bat 第二步:建索引,执行MusicReviewIndex中的单元测试方法index() 第三步:检索测试,执行MusicReviewSearch中的单元测试方法search() 本实例基于: ...

    Elasticsearch6.1.2 Java客户端

    Elasticsearch6.1.2 Java客户端,使用meven仓库创建,配置后即可使用。

    ElasticSearch企业级架构高阶视频教程.zip

    课时04:elasticsearch5.0集群安装 课时05:elasticsearch head插件讲解 课时06:elasticsearch kibana安装与使用 课时07:ik分词器插件的编译安装 课时08:ik分词器插件从mysql中定时获取扩展词停顿词 课时09:ik...

    ElasticSearchPoolUtil.java(es连接池工具类)

    使用过Elasticsearch RestFul API的都知道,在Java端使用是ES服务需要创建Java Client,但是每一次连接都实例化一个client,对系统的消耗很大,而且最令人头疼的是它的连接非常慢。所以为了解决上述问题并提高client...

    elasticsearch6.12 分布式全文检索研究

    针对elasticsearch的一些研究,我选用的版本是6.12 ,内容包括客户端创建,Mapping分词创建(我这里用的是IK6.12版本),索引创建,条件检索,等,研究中发现,elasticsearch插件必须配套,选用一个版本,如果不同...

    Elasticsearch-Java-client-api:Elasticsearch的java客户端使用示例

    Elasticsearch的java客户端使用示例 工程说明: 一. es-hrest-client-src工程: Elasticsearch的高级别的REST客户端使用示例 二、es-java-client-src工程: Elasticsearch的TransportClient客户端使用示例 注意:...

    aws-es-client:客户端以连接到AWS上的ElasticSearch服务

    创建连接到您的AWS ElasticSearch集群的新客户端。 类型定义 姓名 描述 ElasticSearch客户端选项 aws-es-client 创建连接到您的AWS ElasticSearch集群的新客户端。 实例化客户端后,您可以使用常规ElasticSearch ...

    yaesc:另一个Elasticsearch GUI客户端-开源

    Elasticsearch Desktop GUI客户端。 用于创建和测试查询的IDE。

    elasticsearch:用于ElasticSearch的简单PHP客户端

    ElasticSearch PHP客户端ElasticSearch是一个基于Lucene的分布式搜索索引,这是它PHP客户端用法初始设置安装作曲家。 curl -s http://getcomposer.org/installer | php 创建包含以下内容的composer.json : { ...

    elastic4s:Elasticsearch Scala客户端-React性,非阻塞性​​,类型安全,HTTP客户端

    elastic4s-Elasticsearch Scala客户端 Elastic4s是Elasticsearch的简洁,惯用,React式,类型安全的Scala客户端。 官方的Elasticsearch Java客户端当然可以在Scala中使用,但是由于Java的语法,它更加冗长,并且自然...

    ElasticSearch的PHP库.zip

    ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索...

    search_flip:具有可链接DSL的全功能ElasticSearch Ruby客户端

    search_flip 具有可链接DSL的全功能Elasticsearch Ruby客户端 使用SearchFlip,创建与索引相对应的索引类,并使用可链接,简洁但功能强大的DSL操作,查询和聚合这些索引非常简单。 最后,SearchFlip支持Elastic...

    node-simple-elasticsearch:Node.js 的简约 Elasticsearch 客户端

    创建客户端 简单使用 var client = require ( 'simple-elasticsearch' ) . client . create ( ) ; 高级用法 var options = { host : 'localhost' , // default port : 9200 , // default protocol : 'http' , /...

    ElasticSearch

    包括用于 Node.js 的官方低级 Elasticsearch 客户端和浏览器包安装meteor add bigdata:elasticsearch配置Meteor Elasticsearch 会根据您放入设置文件的配置自动创建客户端实例。 这是一个示例 settings.json 文件。...

    基于Elasticsearch-ruby官方客户端的高级Elasticsearch Ruby框架-Ruby开发

    安装用法客户端设置AWS ElasticSearch配置索引定义类型默认导入选项多种(嵌套)和对象字段类型父级和子级类型Geo Point字段Crutches:trade_mark:技术Witchcraft:trade_mark:技术Raw Import导入期间创建索引创建日志...

    Elasticsearch 技术解析与实战.zip

    前言 第1章 Elasticsearch入门 1 1.1 Elasticsearch是什么 1 1.1.1 Elasticsearch的历史 2 1.1.2 相关产品 3 1.2 全文搜索 3 1.2.1 Lucene介绍 4 1.2.2 Lucene倒排索引 4 1.3 基础知识 6 1.3.1 Elasticsearch术语及...

    node-elasticsearch-cacheable:在 redis 中缓存 elasticsearch 搜索查询

    ##Getting 开始安装: npm install elasticsearch-cacheable创建一个 elasticsearch 客户端,用这个模块改变它并使用: var esClient = require ( 'elasticsearch' ) . Client ( ) ;require ( './elasticsearch-...

    积分管理系统java源码-ESClientRHL:ES客户端RHL

    EsClientRHL是一个可基于springboot的elasticsearch RestHighLevelClient客户端调用封装工具,主要提供了es索引结构工具、es索引数据增删改工具、es查询工具、es数据分析工具。 基于elasticsearch6.6+版本进行开发,...

    elasticsearch:适用于R的简单Elasticsearch客户端

    #elasticsearch.R #(此项目已不再维护,如果您想接管,请随时给我发送电子邮件) ##功能(WIP)###文档API 指数 得到 删除 更新 多重获取 块 ###搜索API 搜索 ###索引API 创建索引 删除索引 指数存在...

    基于python操作ES实例详解

    这篇文章主要介绍了基于python操作ES实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考...# 创建elasticsearch客户端 es = Elasticsearch( ES, # 启动前嗅探es集群服务器 sniff_on_sta

Global site tag (gtag.js) - Google Analytics