zoukankan      html  css  js  c++  java
  • 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     }

      
  • 相关阅读:
    老树新芽,在ES6下使用Express
    Swift3翻天覆地的改变
    NodeJs回调操作Promise化
    Node的关系型数据库ORM库:bookshelf
    基于Node的PetShop,RESTful API以及认证
    基于Node的PetShop,oauth2认证RESTful API
    Mongoose轻松搞定MongoDB,不要回调!
    Thymeleaf常用语法:表达式语法之运算符
    Thymeleaf对象的使用:日期对象
    Thymeleaf对象的使用:字符串对象
  • 原文地址:https://www.cnblogs.com/wzj4858/p/8111282.html
Copyright © 2011-2022 走看看