es中的Client
1、概述主要是执行一些action或者操作。2、相关client2.1 ElasticsearchClient执行通用的action,分为同步和异步的,以及使用的线程池。方法有方法说明ActionFuture<Response> execute(ActionType<Response> action, Request request)执行异步操作void execute(A
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> tasks | taskId与Task的映射关系 |
ConcurrentMapLong<CancellableTaskHolder> cancellableTasks | 支持取消的任务持有者 |
AtomicLong taskIdGenerator | taskId生成器 |
方法有
方法 | 说明 |
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的装饰器,提供功能增强
更多推荐
所有评论(0)