Elasticsearch5.5.1插件开发指南
Elasticsearch5.5.1插件开发指南
原文地址:
本文为博主原创翻译,转载需请示。特别是http://www.mamicode.com/ 码迷 这类垃圾网站。
Elasticsearch库包含了一些示例
一个包含Java代码的Java插件。这些例子提供了开始的必要的内容。关于如何编写插件的更多信息,我们建议查看本文中列出的插件,以获得灵感。
插件结构
所有插件文件必须在一个名为elasticsearch的目录下。
插件配置文件
所有的插件必须在elasticsearch的目录下有一个叫“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
Elasticsearch5.5.1插件开发指南的更多相关文章
- 开源遥感平台opticks插件开发指南
Opticks是一款开源的遥感数据处理平台,与其同类开源软件OSSIM一样,支持种类丰富的数据文件格式,但其最大特点为设计精巧的插件开发模式,在设计技巧上,系统提供了良好的封装特性,即使插件开发者对框 ...
- hdwiki中插件开发指南
插件就是为了满足个性化需求按照HDWiki插件开发规范编写的可插拔程序,虽然可以直接对HDWiki进行二次开发实现插件同样的功能,但是这样做势必影响到系统的升级和稳定性. 采用插件的方式,可以随时进行 ...
- 【笔记】jQuery插件开发指南
原文链接:http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html (有部分增删和修改) jQuery插件开发模式 软件开发过程中是需要一定 ...
- jQuery 插件开发指南
jQuery凭借其简洁的API,对DOM强大的操控性,易扩展性越来越受到web开发人员的喜爱,经常有人询问一些技巧,因此干脆写这么一篇文章给各位jQuery爱好者,算是抛砖引玉吧. 那么首先我们来简单 ...
- IntelliJ IDEA/Android Studio插件开发指南
前言 目前在为安卓手机QQ做自动化的相关工作,包括UI自动化,逻辑层自动化等.使用到的uiautomator等框架,需要在Android Studio进行编码工作. 其中很多工作如果做到插件化的话,可 ...
- ElasticSearch5集群部署指南
本文简要介绍ES5版本集群部署时的要点. 更多相关信息请参阅官网. 部分配置未在生产环境体现. 生产中2个集群20台centOS,总数据15TB,90亿条. 实时写入5000条/s, 最大7万/s. ...
- PPAPI插件开发指南
转载请注明出处:http://www.cnblogs.com/fangkm/p/4401075.html 前言 插件一直是浏览器的重要组成部分,丰富浏览器的运行能力,实现一些HTML+JS实现不了本地 ...
- ionic2 自定义cordova插件开发以及使用 (Android)
如何写一个cordova 用于ionic2项目中呢,在搜索了一番之后,千篇一律,我都怀疑那些文章是不是全部都是复制来复制去的,而且都不是很详细.我自己也捣鼓了一下午,踩了很多坑.所以特此写这下这篇,记 ...
- Jenkins插件开发(三)-- 插件编写
在上一篇blog 中我们介绍了如何创建我们第一个jenkins插件,在这一篇blog继续介绍在开发我们的插件过程中需要注意的一些问题. 扩展点选择 Jenkings插件是基于扩展点来实现的,比如基于B ...
随机推荐
- MySQL修改编码为UTF-8无效果解决办法
本来这是一件很简单的事,有很多博客里都有教程,但却足足花了我半天的时间才解决问题. 可能是因为我的MySQL安装时没有选择默认路径的原因,按照网上的教程修改了下图中的my.ini配置文件后编码并没有发 ...
- Error: spawn Unknown system errno 203
在用node写代码的时候发现这个错误,google之无解,现在解决,发于此. 事件起因为一个全局模块通过子进程(chind_process)调用另一个全局模块的命令,这个错误就是在命令行通过全局命令调 ...
- vue学习笔记1-基本知识
1.npm 安装node.js的时候会一起安装npm包管理器,能够解决nodejs代码部署问题,常见使用如下: 允许用户从npm服务器下载别人编写的第三方包到本地应用允许用户从npm服务器下载并安装别 ...
- pb数据窗口之间的传参
问题描述: 通过一个窗口打开一个子窗口并传递指定参数查询详细信息 解决方法: 在前者窗体的user object下的itemchanged事件中,相应位置加入openwithparm函数 : op ...
- sql语句如何将多个空格字符替换成一个空格字符
很多时候,数据表中某个字段的值会带有一个或多个空格字符串的情况,面对多样化的需求,我们可能需要将这些空格字符串去除,当然,这很好说,我们可以直接用replace(' ','')将单个空格变成无就可以了 ...
- c++ 常成员函数 和 常对象
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/zhuyingqingfen/article/details/31751111 先明白几个概念: 1. ...
- Swift中的反射
原文:http://www.cocoachina.com/applenews/devnews/2014/0623/8923.html Swift 事实上是支持反射的.只是功能略弱. 本文介绍主要的反射 ...
- sed命令替换字符包含斜杠\,引号的处理方法
在字符替换中,可能会遇见引号,“/”等的替换,这时应该注意,sed的命令原型是: sed -i "s/oldstring/goalstring/g" file 如果一个路径是da ...
- UVA10129-Play on Words(欧拉路径)
Problem UVA10129-Play on Words Accept: 2534 Submit: 19477 Time Limit: 3000 mSec Problem Description ...
- 【洛谷】【计数原理+Floyed】P1037 产生数
[题目描述:] 给出一个整数 n \((n<10^{30})\) 和 k 个变换规则\((k≤15)\) . 规则: 一位数可变换成另一个一位数: 规则的右部不能为零. 例如: n=234 .有 ...