📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

从集群中删除一个或多个搜索管道。

API 格式 #

DELETE /_search/pipeline/{id}

API 作用 #

该 API 用于从集群中删除搜索管道:

  • 删除指定 ID 的搜索管道
  • 支持通配符批量删除多个管道
  • 删除后无法在搜索请求中使用该管道

API 参数 #

路径参数 #

参数类型是否必填默认值描述
{id}String-管道 ID,支持通配符模式

查询参数 #

参数类型是否必填默认值描述
master_timeoutTime30s连接主节点的超时时间
timeoutTime集群默认操作完成的超时时间

请求示例 #

删除指定管道 #

DELETE /_search/pipeline/my-pipeline

使用通配符删除 #

DELETE /_search/pipeline/logs-*

删除所有管道 #

DELETE /_search/pipeline/*

设置超时时间 #

DELETE /_search/pipeline/my-pipeline?timeout=1m

响应示例 #

成功响应 #

{
  "acknowledged": true
}

响应字段说明 #

字段类型描述
acknowledgedBoolean管道删除是否被集群确认

错误响应 #

管道不存在 #

{
  "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 结尾的管道

处理逻辑 #

  1. 通配符匹配:使用 Regex.simpleMatch() 匹配管道 ID
  2. 批量删除:所有匹配的管道在单个集群状态更新中删除
  3. 错误处理:如果模式不匹配任何管道(且不是全匹配模式),抛出 ResourceNotFoundException

使用场景 #

  1. 管道清理:删除不再使用的搜索管道
  2. 版本更新:删除旧版本管道后创建新版本
  3. 批量管理:使用通配符批量删除相关管道
  4. 环境迁移:在环境迁移前清理旧管道

注意事项 #

  1. 不可恢复:删除后无法恢复,请谨慎操作
  2. 依赖检查:确保没有搜索请求正在使用该管道
  3. 通配符谨慎:使用 * 会删除所有管道,请谨慎操作
  4. 原子操作:批量删除是原子性的,要么全部成功要么全部失败

相关操作 #

  • PUT /_search/pipeline/{id}:创建或更新搜索管道
  • GET /_search/pipeline/{id}:查询搜索管道
  • GET /_search/pipeline:查询所有管道
  • POST /_search/pipeline/{id}/_simulate:模拟管道执行

实现文件 #

  • REST 处理器RestDeleteSearchPipelineAction.java
  • Transport ActionDeleteSearchPipelineTransportAction.java
  • 请求类DeleteSearchPipelineRequest.java
  • 服务类SearchPipelineService.java