插件开发入门 #
本页带你从克隆模板到本地验证,跑通第一个 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() {
// 可在此做初始化日志
}
}
需要 AnalysisPlugin、ActionPlugin、IngestPlugin 等扩展类型时,参考:
结构与类型。
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