插件开发入门

插件开发入门 #

本页带你从克隆模板到本地验证,跑通第一个 Easysearch 插件。

1. 环境准备 #

# 检查 Java(需要 11+)
java -version

# 检查 Gradle
./gradlew -v

2. 从官方模板初始化项目 #

git clone https://github.com/infinilabs/easysearch-plugin-template.git my-plugin
cd my-plugin

重命名包名和类名后即可开始开发。项目结构说明见: 结构与类型

3. 配置 build.gradle(插件元信息) #

plugin-descriptor.properties 由构建过程自动生成,通常不需要手写。你可以直接使用以下完整示例:

buildscript {
    ext {
        easysearch_version = System.getProperty("easysearch.version", "2.1.0")
    }
    repositories {
        mavenCentral()
        gradlePluginPortal()
        maven { url "https://maven.aliyun.com/repository/central" }
        maven { url "https://maven.aliyun.com/repository/gradle-plugin" }
    }
    dependencies {
        classpath "com.infinilabs.easysearch.gradle:build-tools:${easysearch_version}"
    }
}

apply plugin: 'easysearch.esplugin'

esplugin {
    name 'my-plugin'
    description 'My Easysearch Plugin'
    classname 'com.example.myplugin.MyPlugin'
}

group = 'com.example'
version = '0.1.0'

// Skip POM validation - this plugin is not published to maven.
tasks.named('validateNebulaPom') { enabled = false }

4. 编写插件入口类 #

最简单的插件只需继承 Plugin

package com.example.myplugin;

import org.easysearch.plugins.Plugin;

public class MyPlugin extends Plugin {

    public MyPlugin() {
        // 可在此做初始化日志
    }
}

需要 AnalysisPluginActionPluginIngestPlugin 等扩展类型时,参考: 结构与类型

5. 构建 #

./gradlew clean build

# 产物路径
ls build/distributions/
# my-plugin-0.1.0.zip

6. 安装并验证 #

# 安装插件(需要绝对路径)
bin/easysearch-plugin install \
  file:///$(pwd)/build/distributions/my-plugin-0.1.0.zip

# 启动 Easysearch
bin/easysearch

# 确认插件已加载
curl -s http://localhost:9200/_nodes/plugins | \
  python3 -m json.tool | grep -A4 '"my-plugin"'

7. 快速迭代循环 #

# 改代码后
./gradlew build -x test                        # 跳过测试快速构建
bin/easysearch-plugin remove my-plugin         # 卸载旧版
bin/easysearch-plugin install file:///$(pwd)/build/distributions/my-plugin-0.1.0.zip
# 重启 Easysearch,验证 _nodes/plugins

下一步 #