关键词:
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-head插件安装
elasticsearch-head是一个界面化的集群操作和管理工具,可以对集群进行傻瓜式操作。可以通过插件把它集成到ES(首选方式),也可以安装成一个独立WebApp。elasticsearch-head主要有三个方面的操作:显示集群的拓扑,并且能够执行索... 查看详情
关于 MpscAtomicArrayQueue 的 Netty 内存泄漏
...4【问题描述】:图片:memoryleakaboutMpscAtomicArrayQueue环境:ElasticSearch5.5.1不知道为什么MpscAtomicArrayQueue的对象会占用这么多内存,导致OutOfMemo 查看详情
elasticsearch(插件开发)
Elasticsearch源码5(2.x插件开发) Elasticsearch源码5(2.x插件开发)Elasticsearch源码6(5.4插件开发) 查看详情
eclipse提高开发速度-插件篇安装vjet插件,js等提示开发插件
1、安装ApacheBatikCSS一般安装VJET插件会出现Cannotcompletetheinstallbecauseoneormorerequireditemscouldnotbefound.Softwarebeinginstalled:VJETJavaBasedDomKit(Incubation)0.10.0.201303191704(org.eclipse.vjet.vsf.domki 查看详情
chrome插件开发-教程00(如何开发插件)
一chrome浏览器插件的基础知识1.认识chrome插件文件: chrome插件的扩展名是:.crx,可以在chrome官方的应用商店下载(https://chrome.google.com/webstore/category/extensions?hl=zh-CN),从网上下载的插件安装成功后,插件的源文件会被自... 查看详情
jquery插件开发全解析
jQuery插件的开发包括两种:一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法。jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级别的插件开发,即给jQuery对象添加方法。下面就... 查看详情
elasticsearch插件开发指南:如何扩展elasticsearch的功能
1.概述Elasticsearch是一个基于Lucene的分布式搜索引擎,它提供了许多内置的功能和API,例如全文搜索、聚合、地理位置搜索等。但是,在某些情况下,内置的功能可能无法满足我们的需求,或者我们需要自定义一些功能。在这种情... 查看详情
idea插件开发--知识分享插件开发
这篇博客主要分享三方面的内容:1、idea插件开发的基础知识2、搭建一个简易的后台3、实现自己的一个简易插件大的团队协作,每个人都会有自己的一些心得体会或者自己写的方便使用的工具类,自定义view等,当一个新人入职... 查看详情
idea插件开发--知识分享插件开发
这篇博客主要分享三方面的内容:1、idea插件开发的基础知识2、搭建一个简易的后台3、实现自己的一个简易插件大的团队协作,每个人都会有自己的一些心得体会或者自己写的方便使用的工具类,自定义view等,当一个新人入职... 查看详情
wireshark插件开发-lua插件解析
wireshark支持C语言和Lua语言开发插件,本部分内先介绍Lua插件部分开发。Lua语言相对C语言开发有一个巨大的优势,就是不需要编译代码,因为Lua语言是脚本语言,只需要编写相关协议解析的脚本内容,然后由wireshark加载即可(Wire... 查看详情
idea开发插件。
作者:韩梦飞沙Author:han_meng_fei_sha 邮箱:[email protected]E-mail:313134555@qq.com idea开发插件。 IntellijIDEA插件开发入门idea装B插件 idea酷炫插件. activate-power-mode装B插件了,输入特效。 把shake关了,关闭震 查看详情
flutter开发flutter包和插件(开发dart插件包|发布dart插件包)(代码片段)
...中八、博客资源前言上一篇博客【Flutter】开发Flutter包和插件(Flutter包和插件简介|创建Flutter插件|创建Dart包)三、创建Dart包1、AndroidStudio中可视化创建中,创 查看详情
转:jquery插件开发全解析
jQuery插件的开发包括两种:一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法。jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级别的插件开发,即给jQuery对象添加方法。下面就... 查看详情
Java 插件开发
】Java插件开发【英文标题】:JavaPluginDevelopment【发布时间】:2011-03-2220:47:27【问题描述】:我正在开发一个有20个插件的Java应用程序,每个插件都有一些相似的GUI菜单项和菜单事件,但它们将数据存储在数据库中的不同表中。... 查看详情
dynamics365插件开发
...:传统平台需要自己开发,而365平台只需简单配置即可;插件 Plugin(插件),它是一种事件处理 查看详情
vue插件开发入门
相对组件来说,Vue的插件开发受到的关注要少一点。但是插件的功能是十分强大的,能够完成许多Vue框架本身不具备的功能。大家一般习惯直接调用现成的插件,比如官方推荐的 vue-router、vue-touch 等。下面就看一下Vue的... 查看详情
qtcreator插件开发——qtcreator插件实例(代码片段)
QtCreator插件开发(一)——QtCreator插件实例版权声明:本系列文章翻译自:WritingQtCreatorPlugins。如果任何人或机构对于版权有异议,请联系我。本文将使用QtCreator-2.8.1版本进行插件开发,由于QtCreator-2.8.1的插件机制进行了部分更... 查看详情
如何开发 PySide 应用程序插件?
】如何开发PySide应用程序插件?【英文标题】:HowtodevelopaPySideapplicationplugin?【发布时间】:2012-01-2218:34:13【问题描述】:据我了解,Qt提供了两种主要的插件机制:扩展Qt“QtExtensions”的插件扩展使用Qt开发的应用程序的插件我... 查看详情