千家信息网

elasticsearch怎么构造Client实现java客户端调用接口

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容主要讲解"elasticsearch怎么构造Client实现java客户端调用接口",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"elasticse
千家信息网最后更新 2026年11月02日elasticsearch怎么构造Client实现java客户端调用接口

本篇内容主要讲解"elasticsearch怎么构造Client实现java客户端调用接口",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"elasticsearch怎么构造Client实现java客户端调用接口"吧!

    elasticsearch通过构造一个client对外提供了一套丰富的java调用接口。总体来说client分为两类cluster信息方面的client及数据(index)方面的client。这两个大类由可以分为通用操作和admin操作两类。

    client的继承关系

    (1.5版本,其它版本可能不一样):

    通过这个继承关系图可以很清楚的了解client的实现,及功能。总共有三类即client, indicesAdminClient和ClusterAdminClient。它都有自己的实现类,但最后都是通过client接口对外提供服务。client作为对外的总接口,首先通过admin()方法组合了admin的相关操作,它本身也提供了所有对数据和cluster的通用操作。

    方法实现上

    所有的接口都通过两种方式实现了异步调用,一个是返回一个ActionFuture,另外一种方式是接受一个ActionListener。

    以index方法为例

    如下所示

    ActionFuture index(IndexRequest request) ;

    void index(IndexRequest request, ActionListener listener);

    第一个方法会返回一个future,第二个方法则需要传递一个Listener。这也是异步实现的两个基本方式。client使用了门面模式,所有的实现都在AbstractClient类中,还以index方法为例,代码如下所示:

    @Override    public ActionFuture index(final IndexRequest request) {        return execute(IndexAction.INSTANCE, request);    }    @Override    public void index(final IndexRequest request, final ActionListener listener) {        execute(IndexAction.INSTANCE, request, listener);    }

    实现如上所示,之所以说它是门面模式是因为所有的方法都被集成到了client中,但是执行过程都是在对应的action中执行。在execute方法中,获取到相应的action实例,真正的逻辑是在对应的transportaction中实现。

    execute方法代码

    如下所示:

    @SuppressWarnings("unchecked")    @Override    public > ActionFuture execute(Action action, Request request) {        headers.applyTo(request);        TransportAction transportAction = actions.get((ClientAction)action);        return transportAction.execute(request);    }    @SuppressWarnings("unchecked")    @Override    public > void execute(Action action, Request request, ActionListener listener) {        headers.applyTo(request);        TransportAction transportAction = actions.get((ClientAction)action);        transportAction.execute(request, listener);    }

    每一种操作都对应有相应的transportAction,这些transportAction才是最终的执行者。这里先以index为例简单说明,在后面索引功能分析中会看到更多这种的结果。

    public class IndexAction extends ClientAction {    public static final IndexAction INSTANCE = new IndexAction();    public static final String NAME = "indices:data/write/index";    private IndexAction() {        super(NAME);    }    @Override    public IndexResponse newResponse() {        return new IndexResponse();    }    @Override    public IndexRequestBuilder newRequestBuilder(Client client) {        return new IndexRequestBuilder(client);    }}

    在IndexAction中只是简单的定义了一个NAME,及几个简单的方法。这个名字会在启动时作为对于的transportHandler的key注册到TransportService中。在execute方法中,会根据action的将transportAction取出如上一段代码所示。真正的执行逻辑在InternalTransportClient中,这里先略过它的实现,后面会有详细分析。所有这些action的注册都是在actionModule中实现,注册过程会在后面跟action一起分析。

    到此,相信大家对"elasticsearch怎么构造Client实现java客户端调用接口"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    方法 接口 客户 客户端 代码 方式 是在 分析 对外 两个 内容 功能 如上 数据 方面 更多 模式 版本 过程 逻辑 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网加科技 深圳九邦互联网科技有限公司 互联网科技公司税收优惠 互联网科技公司官网 互联网科技ppt模板 广州凡科互联网科技 互联网科技论坛 互联网公司会议桌创意科技软装饰 创业天下互联网科技有限公司 阿里互联网科技公司 宁夏众和广鑫互联网科技有限公司 互联网科技大奖都有哪些公司 链环科技传统企业怎么转型互联网 智帮互联网科技公司最近动向 广东工业互联网大赛深圳学泰科技 昆明中奇联合互联网科技 科技互联网行业投资研究 互联网界的黑科技 悟空问答互联网科技 第三届互联网大会安防黑科技 天津市摩尔互联网科技 互联网科技公司华为 互联网金融公司科技 联恩商钥互联网科技有限公司 顺网科技2021年互联网排名 中国科技创新与世界互联网大会 互联网科技大赛获奖感言 怎样加入科技互联网 科技互联网行业投资研究 银川新华互联网科技学校是国营吗
    0