zoukankan      html  css  js  c++  java
  • Elasticsearch5.5.1插件开发指南

    Elasticsearch5.5.1插件开发指南

    原文地址:

    https://www.elastic.co/guide/en/elasticsearch/plugins/5.5/plugin-authors.html#_plugin_descriptor_file

     

    本文为博主原创翻译,转载需请示。特别是http://www.mamicode.com/  码迷   这类垃圾网站。

     

    Elasticsearch库包含了一些示例

    一个包含Java代码的Java插件。这些例子提供了开始的必要的内容。关于如何编写插件的更多信息,我们建议查看本文中列出的插件,以获得灵感。

     

    插件结构

    所有插件文件必须在一个名为elasticsearch的目录下。

    插件配置文件

    所有的插件必须在elasticsearch的目录下有一个叫“plugin-descriptor.properties”的配置文件。具体的文件格式见链接:

    https://github.com/elastic/elasticsearch/blob/master/buildSrc/src/main/resources/plugin-descriptor.properties

    插件必备配置信息

    description

    插件的简短描述

    version

    插件版本

    name

    插件名称

    classname

    插件的入口,需要实现plugin接口

    java.version

    插件采用的java版本信息

    elasticsearch.version

    匹配的elastic search版本

    注意:在Elasticsearch目录中只有jar文件被添加到该插件的类路径中!如果您需要其他资源,请将它们打包到一个资源jar中。

    插件生命周期

    你必须在每一个新的Elasticsearch版本发布时更新插件版本。当插件被加载时,这个版本号就会被检查,所以Elasticsearch在当前插件匹配的Elasticsearch版本不一致时会报错。

    测试你的插件

    当测试一个Java插件时,如果是在plugins/目录下,会被自动加载的。可以通过

    bin/elasticsearch-plugin install file:///path/to/your/plugin

    来安装插件来测试。

    Java安全权限

    有些插件可能需要额外的安全许可。一个插件可以包含可选的plugin-security.policy文件,其中包含授予附加权限的grant语句声明。任何附加的权限都将显示给用户一个大的警告,并且在安装插件时必须要确认。因此,如果可能,最好避免请求任何伪造的权限!

    如果你使用的是elasticsearch Gradle系统,请把这个文件放到src/main/plugin-metadata,并且它将会在单元测试中被应用。

    请记住,Java安全模型是基于堆栈的,并且额外的权限只会被授予您的插件中的jar,因此您将在需要高级特权的操作上编写适当的安全代码。建议添加一个检查来防止未特权的代码(如脚本)获得升级的权限。例如

    // ES permission you should check before doPrivileged() blocks

    import org.elasticsearch.SpecialPermission;

     

    SecurityManager sm = System.getSecurityManager();

    if (sm != null) {

      // unprivileged code such as scripts do not have SpecialPermission

      sm.checkPermission(new SpecialPermission());

    }

    AccessController.doPrivileged(

      // sensitive operation

    );

    自定义分词插件的例子

    http://blog.csdn.net/u012332735/article/details/62422279

    开发一个elasticsearch插件需要的流程如下:
    - 实现TokenFilter类(org.apache.lucene.analysis包) 用于修改和扩展token的内容
    - AbstractTokenFilterFactory(org.elasticsearch.index.analysis包) 用于生成TokenFilter的实际对象,工厂模式
    - AnalyzerProvider(org.elasticsearch.index.analysis包) 用于提供Analyzer示例
    - AnalysisModule(org.elasticsearch.index.analysis包) 利用guice注入分析插件的名称
    - AbstractComponent(org.elasticsearch.common.component包) 核心组件,用于利用工厂来创建自定义的分析器(Analyzer)和过滤器(TokenFilter)
    - AbstractModule(org.elasticsearch.common.inject包) 注入模块,告诉AbstractComponent生成怎样的实例
    - AbstractPlugin(org.elasticsearch.plugins包) 告诉elasticsearch插件的

    ……………………………………………………………………

    见原博客

    http://blog.csdn.net/u012332735/article/details/62422279

     

  • 相关阅读:
    npm、webpack、vue-cli 快速上手版
    jquery 显示和隐藏的三种方式
    jquery好友面板切换
    jquery 事件冒泡
    jquery QQ微博
    C# Thread 参数
    WPF Dispatcher的使用
    UVa 1600 Patrol Robot (BFS最短路 && 略不一样的vis标记)
    HDU 2795 Billboard (线段树单点更新 && 求区间最值位置)
    HDU 1394 Minimum Inversion Number (树状数组 && 规律 && 逆序数)
  • 原文地址:https://www.cnblogs.com/binshen/p/7427299.html
Copyright © 2011-2022 走看看