1:elasticsearch插件分类简述

2:Java插件开发要点

3:如何针对不同版本elasticsearch提供多版本的插件

4:插件具有外部依赖时遇到的一些问题(2016-09-07更新)

 


 

elasticsearch插件分类简述  

elasticsearch插件分为Site插件及Java插件,前者比如使用最广泛的head插件,而后者比如elastic官方提供的商业插件shield。

需要注意的是Site插件从elasticsearch2.3.0版本开始已被标记为Deprecated,并将从5.0.0版本开始被正式移除,相关的Site插件将被整合到kibana中,或者单独部署web server。具体如何整合我还不太清楚。

下文主要记录Java插件的开发要点,以maven管理为例。

 


 

Java插件开发要点

以下一一个简单功能为例来说明开发流程,该插件记录所有对部署elasticsearch节点的请求,并且根据指定的配置参数,过滤掉敏感操作(DELETE)

1:Java插件入口

继承org.elasticsearch.plugins.Plugin类的入口类,并实现onModule方法。该类中可以通过settings访问elasticsearch配置文件,获取配置信息,并加载下一步的handler,具体实现代码如下所示:

 1 package org.elasticsearch.es.plugin;
 2 
 3 import org.elasticsearch.common.settings.Settings;
 4 import org.elasticsearch.rest.RestModule;
 5 import org.elasticsearch.plugins.Plugin;
 6 
 7 @SuppressWarnings("static-method")
 8 public class MyRestPlugin extends Plugin {
 9 
10     private final Settings settings;
11 
12     public MyRestPlugin(Settings settings){
13         this.settings = settings;
14     }
15 
16     @Override
17     public String name(){
18         return "MyRest";
19     }
20     
21     @Override
22     public String description(){
23         return "ElasticSearch Plugin";
24     }
25 
26     public void onModule(RestModule module){
27         String isPluginEnabled = settings.get("ld.enabled");
28         MethodAuthenticator.setEnabledStr(isPluginEnabled);
29         if(isPluginEnabled != null && isPluginEnabled.toLowerCase().equals("true")){
30             MethodAuthenticator.setIsPluginEnabled(true);
31             String[] denyMethods = settings.getAsArray("ld.deny", new String[]{});
32             if(denyMethods != null){
33                 MethodAuthenticator.setDenyMethods(denyMethods);
34             }
35         } else {
36             MethodAuthenticator.setIsPluginEnabled(false);
37         }
38 
39         module.addRestAction(MyRestHandler.class);
40     }
41     
42 }
View Code

相关文章:

  • 2021-10-04
  • 2021-11-22
  • 2021-12-07
  • 2022-01-14
  • 2022-12-23
  • 2021-10-14
  • 2021-04-24
  • 2022-01-22
猜你喜欢
  • 2021-07-06
  • 2021-07-02
  • 2021-04-29
  • 2022-01-14
  • 2021-12-23
  • 2022-12-23
  • 2022-02-03
相关资源
相似解决方案