一个极简的 Easysearch 插件开发模板,演示如何实现自定义 REST API 端点。
点击 GitHub 的 "Use this template" 按钮,或手动克隆后修改:
# 修改插件名称(3个地方)
# 1. build.gradle: esplugin.name = 'your-plugin-name'
# 2. settings.gradle: rootProject.name = 'your-project-name'
# 3. 包名: src/main/java/org/easysearch/plugin/yourname/推荐优先使用 Gradle(主构建工具),pom.xml 作为 Maven 构建示例:
Gradle:主构建链,覆盖插件打包、单元测试、yamlRestTest、integTestMaven:简化版构建链,覆盖编译、单元测试、插件zip打包
./gradlew build
mvn test package插件包默认生成位置:
Gradle:build/distributions/your-plugin.zipMaven:target/your-plugin.zip
- Gradle:在
build.gradle的esplugin块中配置插件元数据,构建时自动生成plugin-descriptor.properties - Maven:需手动维护
src/main/plugin-metadata/plugin-descriptor.properties模板,构建时通过pom.xml的properties填充:plugin.name- 插件名称plugin.classname- 插件入口类全限定名easysearch.version- Easysearch 版本
如果你要适配不同的 Easysearch 版本:
Gradle:修改build.gradle中默认值,或通过系统属性覆盖Maven:修改pom.xml中的easysearch.version属性
Gradle 默认值示例:
easysearch_version = System.getProperty("easysearch.version", "2.1.0")将默认版本号 2.1.0 改为目标版本,或在构建时通过 -Deasysearch.version=目标版本 覆盖。
示例命令(可直接复制):
./gradlew build -Deasysearch.version=2.2.0
mvn test package -Deasysearch.version=2.2.0# 在 Easysearch 目录中执行
bin/easysearch-plugin install file:///path/to/your-plugin.zip本模板实现了一个简单的 /_hello REST 端点:
GET /_hello?name=tom响应:
{
"message": "Hello tom",
"cluster_name": "easysearch-cluster",
"node_name": "node-1",
"timestamp": 1710000000000
}src/main/java/org/easysearch/plugin/hello/
├── HelloPlugin.java # 插件入口类
└── rest/
└── RestHelloAction.java # REST 处理器示例
-
修改插件类
- 重命名
HelloPlugin.java为你自己的类名 - 实现需要的插件接口(如
ActionPlugin,AnalysisPlugin等)
- 重命名
-
添加 REST 端点
- 参考
RestHelloAction.java创建新的 REST 处理器 - 在
HelloPlugin.getRestHandlers()中注册
- 参考
-
配置插件信息
Gradle:修改build.gradle中的esplugin { ... }Maven:修改pom.xml
模板现在包含最基础的两类测试:
- 单元测试:
src/test/java/org/easysearch/plugin/hello/rest/RestHelloActionTest.java - YAML REST 套件入口:
src/yamlRestTest/java/org/easysearch/plugin/hello/HelloClientYamlTestSuiteIT.java - YAML REST API 定义:
src/yamlRestTest/resources/rest-api-spec/api/hello.json - YAML REST 测试:
src/yamlRestTest/resources/rest-api-spec/test/hello/10_basic.yml
常用命令:
./gradlew test
./gradlew yamlRestTest
./gradlew check
mvn test
mvn package说明:
test运行普通单元测试(类名需要匹配*Test)- 单元测试基于
EasySearchTestCase(推荐沿用testXxx方法命名) yamlRestTest会启动测试集群并执行 REST 用例(需要src/yamlRestTest/java下有 suite 类)check已配置为同时触发integTest与yamlRestTestmvn test/mvn package只覆盖简化版 Maven 构建,不会替代 Gradle 的集成测试链路
本项目以 Gradle 为主构建工具,提供完整的开发、测试、打包链路:
- 编译插件代码
- 运行单元测试
- 启动测试集群并执行 YAML REST 测试
- 打包为可安装的分发包
同时附带 pom.xml 作为 Maven 构建示例,演示如何仅用 Maven 完成基础编译、单元测试和插件打包。适合以下场景:
- 团队只能使用 Maven 构建
- 作为集成到其他 Maven 项目的参考
注意:Maven 构建不包含 YAML REST 测试和集成测试功能。
| 组件 | 版本 |
|---|---|
| Easysearch | 2.x |
| Gradle | 8.10.2 |
| Java | 11+ |
Copyright © INFINI LTD. All rights reserved.
Licensed under the Apache License, Version 2.0.