ESR的插件简单说明

插件类型说明

ESR常用的的插件有2类,一类是js相关的http插件,通常都是实现一些esr的管理相关操作,例如bigdesk,head,kopf,gui等,基本上安装2个就能够满足日常的管理功能,推进使用bigdesk和head。另外一些是功能扩展类的插件,例如analysis-ik,delete-by-query,discovery-multicast等,此类插件大多采用java开放,实现了esr的plugin的接口。

插件配置

js管理类插件

这类插件只需要一个插件描述文件:plugin-descriptor.properties和一个插件实现目录_site,_site下放置一个index.html作为插件的首页即可。
plugin-descriptor.properties简短的内容为:


description=bigdesk - A web front end for an esr cluster
version=esr2.0
site=true
name=bigdesk

功能扩展类插件

这类插件可以没有页面,也不需要_site,仅仅需要plugin-descriptor.properties和功能实现的jar文件,如果需要其他第三方的jar也一并放到插件下就可以
plugin-descriptor.properties简短的内容为:

mandatory elements for all plugins:

'description': simple summary of the plugin

description=http-basic for ESR

'version': plugin's version

version=1.0.0

'name': the plugin name

name=http-basic

mandatory elements for site plugins:

'site': set to true to indicate contents of the _site/

directory in the root of the plugin should be served.

site=false

mandatory elements for jvm plugins :

'jvm': true if the 'classname' class should be loaded

from jar files in the root directory of the plugin.

Note that only jar files in the root directory are

added to the classpath for the plugin! If you need

other resources, package them into a resources jar.

jvm=true

'classname': the name of the class to load, fully-qualified.

classname=com.xxxx.esr.plugin.http.HttpBasicServerPlugin

'java.version' version of java the code is built against

use the system property java.specification.version

version string must be a sequence of nonnegative decimal integers

separated by "."'s and may have leading zeros

java.version=${maven.compiler.target}

'elasticsearch.version' version of elasticsearch compiled against

You will have to release a new version of the plugin for each new

elasticsearch release. This version is checked when the plugin

is loaded so Elasticsearch will refuse to start in the presence of

plugins with the incorrect elasticsearch.version.

esr.version=2.0.0

deprecated elements for jvm plugins :

'isolated': true if the plugin should have its own classloader.

passing false is deprecated, and only intended to support plugins

that have hard dependencies against each other. If this is

not specified, then the plugin is isolated by default.

isolated=${elasticsearch.plugin.isolated}


简单的java实现如下:


public class HttpBasicServerPlugin extends Plugin {

private boolean enabledByDefault = true;
private final Settings settings;

@Inject public HttpBasicServerPlugin(Settings settings) {
    this.settings = settings;
}

@Override public String name() {
    return "http-basic-server-plugin";
}

@Override public String description() {
    return "HTTP Basic Server Plugin";
}

@Override
public Collection nodeModules() {
    Collection< Module> modules = Lists.newArrayList();
    if (settings.getAsBoolean("http.basic.enabled", enabledByDefault)) {
        return Collections.singletonList(new HttpBasicServerModule(settings));
    }
    return modules;
}
            
@Override public Settings additionalSettings() {
    if (settings.getAsBoolean("http.basic.enabled", enabledByDefault)) {
        return Settings.settingsBuilder().
                put("http.enabled", false).                    
                build();
    } else {
        return Settings.Builder.EMPTY_SETTINGS;
    }
}
 
@Override public Collection> nodeServices() {
     Collection> services = Lists.newArrayList();
     if (settings.getAsBoolean("http.basic.enabled", enabledByDefault)) {
         services.add(HttpBasicServer.class);
     }
     return services;
 }

}

你可能感兴趣的:(ESR的插件简单说明)