IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> es中的Client -> 正文阅读

[大数据]es中的Client

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的装饰器,提供功能增强

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-01 15:18:23  更:2022-06-01 15:21:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 22:22:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码