Elasticsearch5.5.1插件开发指南
来源:互联网 发布:nginx的日志文件在哪 编辑:程序博客网 时间:2024/06/04 18:30
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 installfile:///path/to/your/plugin
来安装插件来测试。
Java安全权限
有些插件可能需要额外的安全许可。一个插件可以包含可选的plugin-security.policy文件,其中包含授予附加权限的grant语句声明。任何附加的权限都将显示给用户一个大的警告,并且在安装插件时必须要确认。因此,如果可能,最好避免请求任何伪造的权限!
如果你使用的是elasticsearch Gradle系统,请把这个文件放到src/main/plugin-metadata,并且它将会在单元测试中被应用。
请记住,Java安全模型是基于堆栈的,并且额外的权限只会被授予您的插件中的jar,因此您将在需要高级特权的操作上编写适当的安全代码。建议添加一个检查来防止未特权的代码(如脚本)获得升级的权限。例如
// ES permission you should check beforedoPrivileged() 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
- Elasticsearch5.5.1插件开发指南
- ElasticSearch5.5.1插件分类
- elasticsearch5.2.2 插件开发(一)
- elasticsearch5.2.2 插件开发(三)ScriptPlugin 的实现
- ElasticSearch5.3插件开发(一)控制台打印信息
- ElasticSearch5.3插件开发(二)获取集群健康信息
- firefox插件开发指南
- jQuery插件开发指南
- HDWiki/插件开发指南
- SSMS插件开发指南
- cordova插件开发指南
- 【VSCode】插件开发指南
- PPAPI插件开发指南
- PPAPI插件开发指南
- elasticsearch5 插件ik安装
- Elasticsearch系列(三)----Elasticsearch5.5.1与插件安装
- elasticsearch5.2.2 插件开发(二) 第一个有实际功能的插件
- 5UCMS插件开发指南
- Bootstrap Table 中文文档(完整翻译版)
- 朴素贝叶斯分类
- sql比较字符的,Mybatis中遇到的符号转化,sql比较语句问题!
- 通过div的class绑定,获取值。
- RenderScript应用(四)实现相机模糊切换效果
- Elasticsearch5.5.1插件开发指南
- itchat 群聊转发,自动回复
- Java之IO(七)转换流 InputStreamReader、OutputStreamWrite
- 《C++ Primer》第五版课后习题解答_第三章(4)(30-36)
- linux grep命令详解
- Logistic回归
- 大话设计模式之原型模式
- 使用xshell vi打开某个文件时默认为replace!!
- Qt资料大全