--- title: "删除索引" date: 2026-02-20 lastmod: 2026-02-20 description: "删除一个或多个索引,释放集群资源" tags: ["索引管理", "删除操作"] summary: "删除一个或多个索引,释放集群资源。 API # DELETE /{index} DELETE /* DELETE /_all API 的作用 # 该 API 用于删除索引。删除索引会: 删除索引中的所有文档 删除索引的映射和设置 释放索引占用的磁盘空间 释放索引相关的内存资源 警告:删除操作是不可逆的,请谨慎使用! API 的参数 # 路由参数 # 参数 类型 是否必填 描述 {index} 字符串 必需 要删除的索引名称。支持:单个索引、逗号分隔的多个索引、通配符表达式、_all(所有索引) Query String 参数 # 参数 类型 是否必填 默认值 描述 timeout 时间值 否 30s 操作超时时间 master_timeout 时间值 否 30s 连接到主节点的超时时间 expand_wildcards 枚举值 否 open 通配符展开选项。可选值:open、closed、hidden、none、all ignore_unavailable 布尔值 否 false 是否忽略不可用的索引 allow_no_indices 布尔值 否 false 是否允许通配符表达式解析为空索引 ignore_throttled 布尔值 否 false 是否忽略被限流的索引 示例 # 删除单个索引 # DELETE /my_index 响应示例:" --- 删除一个或多个索引,释放集群资源。 ## API ``` DELETE /{index} DELETE /* DELETE /_all ``` ## API 的作用 该 API 用于删除索引。删除索引会: - 删除索引中的所有文档 - 删除索引的映射和设置 - 释放索引占用的磁盘空间 - 释放索引相关的内存资源 > **警告**:删除操作是不可逆的,请谨慎使用! ## API 的参数 ### 路由参数 | 参数 | 类型 | 是否必填 | 描述 | |------|------|----------|------| | `{index}` | 字符串 | 必需 | 要删除的索引名称。支持:单个索引、逗号分隔的多个索引、通配符表达式、`_all`(所有索引) | ### Query String 参数 | 参数 | 类型 | 是否必填 | 默认值 | 描述 | |------|------|----------|--------|------| | `timeout` | 时间值 | 否 | 30s | 操作超时时间 | | `master_timeout` | 时间值 | 否 | 30s | 连接到主节点的超时时间 | | `expand_wildcards` | 枚举值 | 否 | open | 通配符展开选项。可选值:`open`、`closed`、`hidden`、`none`、`all` | | `ignore_unavailable` | 布尔值 | 否 | false | 是否忽略不可用的索引 | | `allow_no_indices` | 布尔值 | 否 | false | 是否允许通配符表达式解析为空索引 | | `ignore_throttled` | 布尔值 | 否 | false | 是否忽略被限流的索引 | ## 示例 ### 删除单个索引 ```bash DELETE /my_index ``` **响应示例:** ```json { "acknowledged": true } ``` ### 删除多个索引 ```bash DELETE /index1,index2,index3 ``` ### 使用通配符删除索引 ```bash DELETE /logs-2026-* ``` ### 删除所有索引 ```bash DELETE /_all ``` 或 ```bash DELETE /* ``` > **危险操作**:删除所有索引会清空整个集群的数据! ### 包含关闭的索引 ```bash DELETE /test-*?expand_wildcards=open,closed ``` ### 忽略不存在的索引 ```bash DELETE /index1,nonexistent?ignore_unavailable=true ``` ### 设置超时时间 ```bash DELETE /my_index?timeout=5m ``` ### 组合参数使用 ```bash DELETE /logs-*?expand_wildcards=all&ignore_unavailable=true&master_timeout=1m ``` ## expand_wildcards 参数说明 | 值 | 描述 | |----|------| | `open` | 只展开到打开的索引(默认) | | `closed` | 只展开到关闭的索引 | | `hidden` | 只展开到隐藏的索引 | | `none` | 不展开通配符 | | `all` | 展开到所有索引(打开、关闭、隐藏) | ## 错误处理 ### 索引不存在 当尝试删除不存在的索引时: ```json { "error": { "root_cause": [ { "type": "index_not_found_exception", "reason": "no such index [nonexistent]" } ], "type": "index_not_found_exception", "reason": "no such index [nonexistent]" }, "status": 404 } ``` 使用 `ignore_unavailable=true` 可忽略此错误。 ### 索引被锁定 当索引被锁定时,删除操作会失败。 ## 注意事项 1. **不可逆操作**:删除索引后无法恢复,除非有快照备份 2. **资源释放**:删除索引后,磁盘空间不会立即释放,需要等待段合并 3. **别名影响**:删除索引会同时删除指向该索引的所有别名 4. **集群状态**:删除大量索引可能影响集群性能 5. **生产环境**:建议在生产环境禁用 `DELETE /_all` 操作