删除指定的规则库(规则仓库),包括从索引中删除元数据以及从所有节点删除物理文件。
API 格式 #
DELETE /_match_rules/{repo_id}
API 作用 #
该 API 用于删除规则库,执行以下操作:
- 检查规则库是否被管道(pipeline)依赖
- 从
.match_rules系统索引中删除规则库文档 - 从集群所有节点删除规则库的物理文件
- 更新节点元数据
API 参数 #
路径参数 #
| 参数 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
{repo_id} | String | 是 | - | 要删除的规则库的唯一标识符 |
请求体参数 #
请求体可选,可包含以下字段:
{
"repo_id": "repository-identifier"
}
| 参数 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
repo_id | String | 否 | - | 规则库 ID(与路径参数作用相同) |
请求示例 #
删除指定规则库 #
DELETE /_match_rules/security_v1
使用请求体删除 #
DELETE /_match_rules/security_v1
{
"repo_id": "security_v1"
}
响应示例 #
成功响应 #
{
"success": true,
"message": "Successfully deleted rule repository 'security_v1' (deleted 1 documents)",
"node_name": "node-1"
}
多节点集群响应 #
{
"success": true,
"message": "Successfully deleted rule repository 'my_rules' from 3 nodes (deleted 1 documents)",
"node_name": "node-1"
}
依赖检查失败响应 #
{
"success": false,
"message": "Cannot delete rule repository 'security_v1' because it is used by the following pipelines: pipeline1, pipeline2",
"node_name": "node-1"
}
错误响应 #
{
"success": false,
"message": "Failed to delete rule repository 'security_v1': error details",
"node_name": "node-1"
}
删除流程 #
1. 依赖检查 #
API 首先检查是否有管道使用该规则库:
- 扫描所有管道配置中的
check_match_rules处理器 - 如果发现依赖,阻止删除并返回依赖管道列表
- 仅在没有依赖时继续执行删除
2. 索引文档删除 #
从 .match_rules 索引中删除规则库文档:
- 使用
RulesIndexService.deleteRulesByRepoId()执行 - 跟踪删除的文档数量
- 此步骤失败则终止整个操作
3. 物理文件删除 #
根据集群模式执行不同的删除策略:
单节点模式 #
- 直接从当前节点删除物理文件
- 使用
Files.walk()递归删除规则目录 - 更新本地元数据
集群模式 #
- 将删除命令广播到所有摄入节点
- 使用内部 action
cluster:admin/rules/delete/internal - 等待所有节点完成(超时 5 分钟)
- 聚合所有节点的结果
4. 物理文件清理 #
- 验证路径防止目录遍历攻击
- 使用
AccessController进行安全文件删除 - 递归删除:所有文件、子目录、目录本身
- 更新本地元数据跟踪已删除的规则库
响应字段说明 #
| 字段 | 类型 | 描述 |
|---|---|---|
success | Boolean | 操作是否成功 |
message | String | 操作结果消息,包含删除的文档数和节点信息 |
node_name | String | 处理请求的节点名称 |
安全特性 #
- 依赖验证:防止删除正在使用的规则库
- 路径验证:防止目录遍历攻击
- 安全文件删除:使用 Java 安全管理器
- 幂等性:安全多次删除同一规则库
- 原子操作:任何步骤失败都会终止操作
使用场景 #
- 删除过时或不再使用的规则库
- 测试后清理规则库
- 维护存储效率
- 规则库生命周期管理
注意事项 #
- 依赖检查:确保没有管道正在使用要删除的规则库
- 集群同步:在集群模式下,删除会传播到所有节点
- 不可恢复:删除后规则库无法恢复,请谨慎操作
- 超时处理:大型集群的文件删除可能需要较长时间
- 权限要求:需要
cluster:admin/rules/delete权限





