1、概述

主要是执行一些action或者操作。

其结构图为

AdminClient与ElasticsearchClient关系图为

2、相关client

2.1 ElasticsearchClient

执行通用的action,分为同步和异步的,以及使用的线程池。

方法有

方法说明
ActionFuture<Response> execute(ActionType<Response> action, Request request)执行异步操作
void execute(ActionType<Response> action, Request request, ActionListener<Response> listener)执行同步操作
ThreadPool threadPool()执行时所使用的线程池

2.2 Client

客户端提供一个一站式接口,用于对集群执行操作。

其方法有

方法说明
AdminClient admin()可用于执行管理操作的管理客户端
ActionFuture<IndexResponse> index(IndexRequest request)索引与给定索引关联的JSON源
void index(IndexRequest request, ActionListener<IndexResponse> listener)索引与给定索引关联的文档
IndexRequestBuilder prepareIndex()索引与给定索引关联的文档,不带参数,准备索引请求的builder
IndexRequestBuilder prepareIndex(String index)索引与给定索引关联的文档,带参数index,准备索引请求的builder
ActionFuture<UpdateResponse> update(UpdateRequest request)基于脚本更新文档
void update(UpdateRequest request, ActionListener<UpdateResponse> listener)基于脚本更新文档
UpdateRequestBuilder prepareUpdate()准备基于脚本更新文档的更新请求。
UpdateRequestBuilder prepareUpdate(String index, String id)通过参数index和id,准备基于脚本更新文档的更新请求。
ActionFuture<DeleteResponse> delete(DeleteRequest request)根据索引和id从索引中删除文档
void delete(DeleteRequest request, ActionListener<DeleteResponse> listener)根据索引和id从索引中删除文档
DeleteRequestBuilder prepareDelete()根据索引和id创建删除请求
DeleteRequestBuilder prepareDelete(String index, String id)根据索引和id创建删除请求
ActionFuture<BulkResponse> bulk(BulkRequest request)批量索引/删除操作
void bulk(BulkRequest request, ActionListener<BulkResponse> listener)批量索引/删除操作
BulkRequestBuilder prepareBulk()执行大量索引/删除操作
BulkRequestBuilder prepareBulk(String globalIndex)使用默认索引执行大量索引/删除操作
ActionFuture<GetResponse> get(GetRequest request)获取根据id索引的文档
void get(GetRequest request, ActionListener<GetResponse> listener)获取根据id索引的文档
GetRequestBuilder prepareGet()准备获取索引文档请求
GetRequestBuilder prepareGet(String index, String id)根据索引及id准备获取索引文档请求
ActionFuture<MultiGetResponse> multiGet(MultiGetRequest request)获取多文档 
void multiGet(MultiGetRequest request, ActionListener<MultiGetResponse> listener)获取多文档 
MultiGetRequestBuilder prepareMultiGet()准备多文档请求
ActionFuture<SearchResponse> search(SearchRequest request)搜索
void search(SearchRequest request, ActionListener<SearchResponse> listener)搜索
SearchRequestBuilder prepareSearch(String... indices)准备搜索请求
ActionFuture<SearchResponse> searchScroll(SearchScrollRequest request)搜索滚动请求,以继续搜索以前的可滚动搜索请求
void searchScroll(SearchScrollRequest request, ActionListener<SearchResponse> listener)搜索滚动请求
 SearchScrollRequestBuilder prepareSearchScroll(String scrollId)准备搜索滚动请求
ActionFuture<MultiSearchResponse> multiSearch(MultiSearchRequest request)多搜索请求
void multiSearch(MultiSearchRequest request, ActionListener<MultiSearchResponse> listener)多搜索请求
 MultiSearchRequestBuilder prepareMultiSearch()准备多搜索请求
ActionFuture<TermVectorsResponse> termVectors(TermVectorsRequest request)返回特定文档的术语向量的操作
void termVectors(TermVectorsRequest request, ActionListener<TermVectorsResponse> listener)返回特定文档的术语向量的操作
TermVectorsRequestBuilder prepareTermVectors()准备特定文档的术语向量请求
TermVectorsRequestBuilder prepareTermVectors(String index, String id)准备特定文档的术语向量请求
ActionFuture<MultiTermVectorsResponse> multiTermVectors(MultiTermVectorsRequest request)多获取项向量
void multiTermVectors(MultiTermVectorsRequest request, ActionListener<MultiTermVectorsResponse> listener)多获取项向量
MultiTermVectorsRequestBuilder prepareMultiTermVectors()准备多获取项向量请求
ExplainRequestBuilder prepareExplain(String index, String id)准备explain请求
ActionFuture<ExplainResponse> explain(ExplainRequest request)计算指定请求的分数解释
void explain(ExplainRequest request, ActionListener<ExplainResponse> listener)计算指定请求的分数解释
ClearScrollRequestBuilder prepareClearScroll()准备清除与指定滚动ID关联的搜索上下文请求
ActionFuture<ClearScrollResponse> clearScroll(ClearScrollRequest request)清除与指定滚动ID关联的搜索上下文
void clearScroll(ClearScrollRequest request, ActionListener<ClearScrollResponse> listener)清除与指定滚动ID关联的搜索上下文
FieldCapabilitiesRequestBuilder prepareFieldCaps(String... indices)准备现场能力请求生成器请求
ActionFuture<FieldCapabilitiesResponse> fieldCaps(FieldCapabilitiesRequest request)从提供的请求返回现场能力的操作
 void fieldCaps(FieldCapabilitiesRequest request, ActionListener<FieldCapabilitiesResponse> listener)从提供的请求返回现场能力的操作
Settings settings()客户端配置
Client filterWithHeader(Map<String, String> headers)返回一个新的轻量级客户端,该客户端将所有给定的头应用于它发出的每个请求
default Client getRemoteClusterClient(String clusterAlias) 默认方法,将客户端返回到具有给定群集别名的远程群集

2.3 AbstractClient

是Client的抽象实现类,实现了ElasticsearchClient中的execute方法,最终会执行doExecute抽象方法。

方法说明
void doExecute(ActionType<Response> action, Request request, ActionListener<Response> listener)ActionType为其它具体Action的父类,Request为ActionRequest的子类,listenere为响应的临听器。

其处理时序为 

 支持的命令有index,update,delete,bulk,get,multiGet,search,searchScroll, multiSearch, termVectors,multiTermVectors,explain,clearScroll,fieldCaps,具体命令是通过调用execute方法执行,最终是调用子类的doExecute来执行具体的命令操作。

2.4 NodeClient

是执行当前所在node节点的action的客户端。

其成员有

成员说明
Map<ActionType, TransportAction> actions行为类型与行为之间的映射关系
TaskManager taskManager任务管理器
Supplier<String> localNodeId本地节点提供者
Transport.Connection localConnection本地连接
RemoteClusterService remoteClusterService远端集群服务
NamedWriteableRegistry namedWriteableRegistry有名写的注册器

2.4.1 initialize

用于初始化成员。其是Node节点启动时初始化的

2.4.2 doExecute 

其执行具体的行为逻辑。调用executeLocally。

public <    Request extends ActionRequest,
                Response extends ActionResponse
            > Task executeLocally(ActionType<Response> action, Request request, ActionListener<Response> listener) {
        return taskManager.registerAndExecute("transport", transportAction(action), request, localConnection,
                (t, r) -> {
                    try {
                        listener.onResponse(r);
                    } catch (Exception e) {
                        assert false : new AssertionError("callback must handle its own exceptions", e);
                        throw e;
                    }
                }, (t, e) -> {
                    try {
                        listener.onFailure(e);
                    } catch (Exception ex) {
                        ex.addSuppressed(e);
                        assert false : new AssertionError("callback must handle its own exceptions", ex);
                        throw ex;
                    }
                });
    }

(1)通过transportAction来根据actionType得到具体的TransportAction

(2)执行TaskManager#registerAndExecute注册任务,然后调用TransportAction#execute来执行行为。

2.4.3 TaskManager

用于跟踪节点上正在运行的任务。

其成员有

成员说明
ConcurrentMapLong<Task> taskstaskId与Task的映射关系
ConcurrentMapLong<CancellableTaskHolder> cancellableTasks支持取消的任务持有者
AtomicLong taskIdGeneratortaskId生成器

方法有

方法说明
Task register(String type, String action, TaskAwareRequest request)注册任务,根据情况注册普通任务或者可以取消的任务
Task registerAndExecute(String type, TransportAction<Request, Response> action, Request request, Transport.Connection localConnection,
                            BiConsumer<Task, Response> onResponse, BiConsumer<Task, Exception> onFailure)
注册任务后,执行action
Task unregister(Task task)处理响应或者异常失败时会注销任务

2.5 FilterClient 

是AbstractClient的子类,也是抽象类。作为AbstractClient的装饰器,提供功能增强

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐