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

 

Elasticsearch5.5.1插件开发指南的更多相关文章

  1. 开源遥感平台opticks插件开发指南

    Opticks是一款开源的遥感数据处理平台,与其同类开源软件OSSIM一样,支持种类丰富的数据文件格式,但其最大特点为设计精巧的插件开发模式,在设计技巧上,系统提供了良好的封装特性,即使插件开发者对框 ...

  2. hdwiki中插件开发指南

    插件就是为了满足个性化需求按照HDWiki插件开发规范编写的可插拔程序,虽然可以直接对HDWiki进行二次开发实现插件同样的功能,但是这样做势必影响到系统的升级和稳定性. 采用插件的方式,可以随时进行 ...

  3. 【笔记】jQuery插件开发指南

    原文链接:http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html (有部分增删和修改) jQuery插件开发模式 软件开发过程中是需要一定 ...

  4. jQuery 插件开发指南

    jQuery凭借其简洁的API,对DOM强大的操控性,易扩展性越来越受到web开发人员的喜爱,经常有人询问一些技巧,因此干脆写这么一篇文章给各位jQuery爱好者,算是抛砖引玉吧. 那么首先我们来简单 ...

  5. IntelliJ IDEA/Android Studio插件开发指南

    前言 目前在为安卓手机QQ做自动化的相关工作,包括UI自动化,逻辑层自动化等.使用到的uiautomator等框架,需要在Android Studio进行编码工作. 其中很多工作如果做到插件化的话,可 ...

  6. ElasticSearch5集群部署指南

    本文简要介绍ES5版本集群部署时的要点. 更多相关信息请参阅官网. 部分配置未在生产环境体现. 生产中2个集群20台centOS,总数据15TB,90亿条. 实时写入5000条/s, 最大7万/s. ...

  7. PPAPI插件开发指南

    转载请注明出处:http://www.cnblogs.com/fangkm/p/4401075.html 前言 插件一直是浏览器的重要组成部分,丰富浏览器的运行能力,实现一些HTML+JS实现不了本地 ...

  8. ionic2 自定义cordova插件开发以及使用 (Android)

    如何写一个cordova 用于ionic2项目中呢,在搜索了一番之后,千篇一律,我都怀疑那些文章是不是全部都是复制来复制去的,而且都不是很详细.我自己也捣鼓了一下午,踩了很多坑.所以特此写这下这篇,记 ...

  9. Jenkins插件开发(三)-- 插件编写

    在上一篇blog 中我们介绍了如何创建我们第一个jenkins插件,在这一篇blog继续介绍在开发我们的插件过程中需要注意的一些问题. 扩展点选择 Jenkings插件是基于扩展点来实现的,比如基于B ...

随机推荐

  1. CSS中各种长度单位总结

    在前端开发工作过程中曾碰到这样一问题: <style type="text/css"> .parent{ width:400px; height:300px; bord ...

  2. go 排序sort的使用

    已知一个的struct组成的数组,现在要按照数组中的一个字段排序.python有sort方法,那golang要怎么实现呢?其实golang也有sort方法,并且使用简单,功能强大. 我们先看一下sor ...

  3. 洗礼灵魂,修炼python(59)--爬虫篇—httplib模块

    httplib 1.简介 同样的,httplib默认存在于python2,python3不存在: httplib是python中http协议的客户端实现,可以用来与 HTTP 服务器进行交互,支持HT ...

  4. 使用Anemometer基于pt-query-digest将MySQL慢查询可视化

    最近玩MySQL,发现了一个很不错的工具,可以把MySQL慢查询可视化,方便我们去找出和分析慢询语句,搭建的步骤不多,但网上详细教程比较少,说得也不够详细,一不小心,估计得蛋痛一会,哈哈 Percon ...

  5. zTree 优秀的jquery树插件

    zTree 优秀的jquery树插件,文档详细,渲染快 使用方法: 1.引用zTree的js和css文件 <link href="~/Content/zTree_v3/css/zTre ...

  6. 针对需要使用T3协议的Weblogic2628漏洞解决方案

    针对需要使用T3协议的Weblogic2628漏洞解决方案 前几天用户的服务器中检查到了Weblogic2628l漏洞,并且打过Oracle官方补丁后还是能检测到. 针对此问题,去网上查找了一些资料. ...

  7. 如何创建一个 mongo 数据库并为它添加一个认证用户?

    0.登录 admin 库,开启一个 mongo shell mongo --port 27017 -u "adminUser" -p "adminPass" - ...

  8. 设计 MySQL 数据表的时候一般都有一列为自增 ID,这样设计原因是什么,有什么好处?

    知乎采集: MyISAM/InnoDB默认用B-Tree索引(可理解为"排好序的快速查找结构"). InnoDB中,主索引文件上直接存放该行数据,称为聚簇索引.次索引指向对主键的引 ...

  9. 简单规划dp sumsets

    Farmer John commanded his cows to search for different sets of numbers that sum to a given number. T ...

  10. CF895C: Square Subsets && 【BZOJ2844】albus就是要第一个出场

    CF895C: Square Subsets && [BZOJ2844]albus就是要第一个出场 这两道题很类似,都是线性基的计数问题,解题的核心思想也一样. CF895C Squa ...