• elasticsearch插件开发


    1.ES插件,继承自Plugin抽象类,其内部方法比较简单,我们看一下方法。

     

    主要方法功能如下:

    additionalSettings方法可以为节点添加额外的setting设置,但如果节点的配置文件有相同设置,则以配置文件为准。

    description和name方法是在PluginsService加载并初始化Plugin对象时候被调用,用来描述本插件的信息。

    Collection<Module> indexModules(Settings indexSettings)方法:自定义索引级别的Module,创建索引时调用,根据传入的setting返回自定义的module集合

    Collection<Class<? extends Closeable>> indexServices()方法:在removeIndex时候自动调用,进行一些资源释放工作

    Collection<Module> nodeModules()方法:节点级别的module,在构造Node或TransportClient对象的时候调用

    Collection<Class<? extends LifecycleComponent>> nodeServices()方法:自定义的节点级服务,在节点生命周期变化时候调用响应的start stop close方法。

    Collection<Module> shardModules(Settings indexSettings)方法:自定义分片级别的Module,创建shard时调用,根据传入的setting返回自定义的module集合

    public Collection<Module> indexModules(Settings indexSettings)方法:在closeShard时自动调用,进行一些资源释放工作

    此外,还能添加多个重载的onModule(Module module)方法,用于调整节点自带的module。

    2.开发自定义插件

    下面编写我们的第一个插件class AuthorityServerPlugin extends Plugin 

    其内部结构如下:

     

    1.1 描述了插件基本信息,

    1.2通过重载多个onModule方法来操作指定的model。节点启动的时候会调用onModule方法

    依次调用各插件的OnModule方法,根据OnModule参数指定的models类型来依次操作对应的Model,最后再初始化每个model。比如我们这里修改了3个modes
    为RestModule添加一个过滤器
    public void onModule(RestModule module) { module.addRestAction(AuthorityRestFilter.class); }
    为actionModels添加自定义过滤器AuthorityActionFilter
    public void onModule(final ActionModule module) {
        module.registerFilter(AuthorityActionFilter.class);
    }
    使用自定义AuthorityTransportService来代替默认的TransportService
    public void onModule(final TransportModule module) {
        module.setTransportService(AuthorityTransportService.class, name());
    }
    1.3 添加自定义service.
    LifecycleComponent接口随着Node生命周期的变化,依次调用其实现类的doStart 、doStop 和 doClose方法。
    1     public Collection<Class<? extends LifecycleComponent>> nodeServices() {
    2         final Collection<Class<? extends LifecycleComponent>> services = new ArrayList<Class<? extends LifecycleComponent>>();
    3         services.add(ConfigurationService.class);
    4         return services;
    5     }

      
  • 相关阅读:
    Test SLURM
    PGM_Foundations
    PGM-Introduction
    Functional Analysis-Metric Space
    Introduction to Machine Learning
    Time Series Analysis
    Solving Puzzles With HHT From a Engineering Perspective
    Docker-3:Data Volume
    Docker-2:network containers
    Docker-1
  • 原文地址:https://www.cnblogs.com/wzj4858/p/8111282.html
Copyright © 2020-2023  润新知