从集群中删除一个或多个搜索管道。
API 格式 #
DELETE /_search/pipeline/{id}
API 作用 #
该 API 用于从集群中删除搜索管道:
- 删除指定 ID 的搜索管道
- 支持通配符批量删除多个管道
- 删除后无法在搜索请求中使用该管道
API 参数 #
路径参数 #
| 参数 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
{id} | String | 是 | - | 管道 ID,支持通配符模式 |
查询参数 #
| 参数 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
master_timeout | Time | 否 | 30s | 连接主节点的超时时间 |
timeout | Time | 否 | 集群默认 | 操作完成的超时时间 |
请求示例 #
删除指定管道 #
DELETE /_search/pipeline/my-pipeline
使用通配符删除 #
DELETE /_search/pipeline/logs-*
删除所有管道 #
DELETE /_search/pipeline/*
设置超时时间 #
DELETE /_search/pipeline/my-pipeline?timeout=1m
响应示例 #
成功响应 #
{
"acknowledged": true
}
响应字段说明 #
| 字段 | 类型 | 描述 |
|---|---|---|
acknowledged | Boolean | 管道删除是否被集群确认 |
错误响应 #
管道不存在 #
{
"error": {
"root_cause": [
{
"type": "resource_not_found_exception",
"reason": "pipeline [my-pipeline] not found"
}
],
"type": "resource_not_found_exception",
"reason": "pipeline [my-pipeline] not found"
}
}
通配符支持 #
API 支持通配符模式进行批量删除:
*:匹配所有管道logs-*:匹配以logs-开头的管道*-v1:匹配以-v1结尾的管道
处理逻辑 #
- 通配符匹配:使用
Regex.simpleMatch()匹配管道 ID - 批量删除:所有匹配的管道在单个集群状态更新中删除
- 错误处理:如果模式不匹配任何管道(且不是全匹配模式),抛出
ResourceNotFoundException
使用场景 #
- 管道清理:删除不再使用的搜索管道
- 版本更新:删除旧版本管道后创建新版本
- 批量管理:使用通配符批量删除相关管道
- 环境迁移:在环境迁移前清理旧管道
注意事项 #
- 不可恢复:删除后无法恢复,请谨慎操作
- 依赖检查:确保没有搜索请求正在使用该管道
- 通配符谨慎:使用
*会删除所有管道,请谨慎操作 - 原子操作:批量删除是原子性的,要么全部成功要么全部失败
相关操作 #
- PUT /_search/pipeline/{id}:创建或更新搜索管道
- GET /_search/pipeline/{id}:查询搜索管道
- GET /_search/pipeline:查询所有管道
- POST /_search/pipeline/{id}/_simulate:模拟管道执行
实现文件 #
- REST 处理器:
RestDeleteSearchPipelineAction.java - Transport Action:
DeleteSearchPipelineTransportAction.java - 请求类:
DeleteSearchPipelineRequest.java - 服务类:
SearchPipelineService.java





