--- title: "Easysearch 正式支持插件开发:让你的搜索系统真正"为你所用"" date: 2026-04-24 lastmod: 2026-04-24 description: "从 Easysearch 2.1.2 开始,插件开发能力正式对外开放。构建依赖库已发布到 Maven 中央仓库,你可以基于官方接口开发自定义插件,让搜索系统真正为你所用。" tags: ["Easysearch", "插件", "开发", "自定义", "扩展"] summary: "从"用搜索"到"造搜索" # 搜索系统的需求千差万别。标准功能覆盖不了所有场景——行业特定的分词规则、定制化的业务逻辑、与外部系统的深度集成…… 以往,这类定制需求需要依赖厂商支持。从 Easysearch 2.1.2 开始,你可以自己动手了。 随着构建依赖库正式发布到 Maven 中央仓库,Easysearch 的插件开发能力正式对外开放。这意味着 Easysearch 不再是一个黑盒产品,而是一个可扩展、可定制的搜索平台。你可以基于官方接口开发自定义插件,像使用原生功能一样使用它们。 插件能做什么 # Easysearch 提供三类核心扩展点,覆盖搜索系统的关键环节: Easysearch 插件架构与流程位置图 1. 文档写入 & 索引流程 原始文档写入数据 → Ingest 插件写入阶段 → 分析器插件索引阶段 → Easysearch 索引数据存储 2. 搜索查询流程 客户端请求搜索查询 → REST 插件查询阶段 → 执行搜索查询索引 → 返回结果搜索响应 Ingest 插件 - 写入阶段 分析器插件 - 索引阶段 REST 插件 - 查询阶段 1. 分析器插件(AnalysisPlugin) # 自定义分词器、Token 过滤器、字符过滤器。适用于: 电商 SKU 的型号规格解析 医疗、法律等领域的专业术语分词 特殊符号或空格的规范化处理 注册后直接在索引设置中使用,与原生分析器完全等同。" --- ## 从"用搜索"到"造搜索" 搜索系统的需求千差万别。标准功能覆盖不了所有场景——行业特定的分词规则、定制化的业务逻辑、与外部系统的深度集成…… 以往,这类定制需求需要依赖厂商支持。**从 Easysearch 2.1.2 开始,你可以自己动手了。** 随着构建依赖库正式发布到 Maven 中央仓库,Easysearch 的插件开发能力正式对外开放。这意味着 Easysearch 不再是一个黑盒产品,而是一个**可扩展、可定制的搜索平台**。你可以基于官方接口开发自定义插件,像使用原生功能一样使用它们。 ## 插件能做什么 Easysearch 提供三类核心扩展点,覆盖搜索系统的关键环节:

Easysearch 插件架构与流程位置图

1. 文档写入 & 索引流程

原始文档写入数据
Ingest 插件写入阶段
分析器插件索引阶段
Easysearch 索引数据存储

2. 搜索查询流程

客户端请求搜索查询
REST 插件查询阶段
执行搜索查询索引
返回结果搜索响应
Ingest 插件 - 写入阶段
分析器插件 - 索引阶段
REST 插件 - 查询阶段
### 1. 分析器插件(AnalysisPlugin) 自定义分词器、Token 过滤器、字符过滤器。适用于: - 电商 SKU 的型号规格解析 - 医疗、法律等领域的专业术语分词 - 特殊符号或空格的规范化处理 注册后直接在索引设置中使用,与原生分析器完全等同。
20250424
↓ 自定义分词器
2025 04 24
### 2. REST/API 插件(ActionPlugin) 新增自定义 HTTP 接口。适用于: - 封装业务查询逻辑,对外暴露简化 API - 对接企业内部权限中心或监控系统 - 暴露插件自身的管理接口(如状态检查)
GET /_my_plugin/status
{"status":"ok","version":"1.0"}
### 3. Ingest 插件(IngestPlugin) 在文档写入前进行字段转换。适用于: - 自定义业务字段转换(如根据业务规则计算衍生字段) - 数据标准化(统一日期格式、大小写转换) - 富文本提取或元数据生成
接收请求写入文档
Ingest 插件字段转换
建立索引存储数据
## 5 分钟上手 我们准备了[官方模板仓库](https://github.com/infinilabs/easysearch-plugin-template),让你从克隆到运行只需几条命令: ```bash # 克隆模板 git clone https://github.com/infinilabs/easysearch-plugin-template.git my-plugin cd my-plugin # 修改包名和类名,编写你的逻辑 # ... ``` **方式一:开发调试——直接运行** ```bash # 构建插件并运行 ./gradlew run # 验证插件 curl -s "http://localhost:9200/_cat/plugins?v" | grep my-plugin ``` **方式二:构建后安装到外部集群** ```bash # 构建插件 ./gradlew build # 安装到 Easysearch bin/easysearch-plugin install file:///$(pwd)/build/distributions/my-plugin-0.1.0.zip # 启动验证 bin/easysearch curl -s "http://localhost:9200/_cat/plugins?v" | grep my-plugin ``` 完整的开发指南请参考[插件开发文档](https://docs.infinilabs.com/easysearch/main/docs/integrations/plugins/)。 ## 设计哲学 Easysearch 插件系统的设计遵循三个原则: **渐进式扩展**——从最简单的 `Plugin` 类开始,按需实现 `AnalysisPlugin`、`ActionPlugin` 等接口,不必一次性掌握全部 API。 **与原生同等**——插件注册的分析器、处理器与系统原生组件在使用方式上完全一致,用户无需关心实现来源。 **版本安全**——插件加载时校验 `easysearch.version`,版本不匹配会拒绝加载,避免运行时异常。 ## 从插件到生态 插件开发不只是技术能力的开放,更是产品理念的转变。 你可以将开发的插件发布到 GitHub Releases,通过 URL 直接安装:
开发编写代码
打包gradlew build
发布GitHub Releases
安装plugin install
```bash bin/easysearch-plugin install https://github.com/yourname/my-plugin/releases/download/v0.1.0/my-plugin-0.1.0.zip ``` 我们也欢迎社区贡献。如果你有通用的插件想法,欢迎与我们交流。 ## 结语 搜索系统的最后一公里,只有业务开发者最清楚该怎么走。 Easysearch 2.1.2 的插件开发能力,让你能够自主掌控搜索系统的"最后一公里"。从"用搜索"到"造搜索",现在你可以让你的搜索系统真正"为你所用"。