删除一个或多个索引,释放集群资源。
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
响应示例:
{
"acknowledged": true
}
删除多个索引 #
DELETE /index1,index2,index3
使用通配符删除索引 #
DELETE /logs-2026-*
删除所有索引 #
DELETE /_all
或
DELETE /*
危险操作:删除所有索引会清空整个集群的数据!
包含关闭的索引 #
DELETE /test-*?expand_wildcards=open,closed
忽略不存在的索引 #
DELETE /index1,nonexistent?ignore_unavailable=true
设置超时时间 #
DELETE /my_index?timeout=5m
组合参数使用 #
DELETE /logs-*?expand_wildcards=all&ignore_unavailable=true&master_timeout=1m
expand_wildcards 参数说明 #
| 值 | 描述 |
|---|---|
open | 只展开到打开的索引(默认) |
closed | 只展开到关闭的索引 |
hidden | 只展开到隐藏的索引 |
none | 不展开通配符 |
all | 展开到所有索引(打开、关闭、隐藏) |
错误处理 #
索引不存在 #
当尝试删除不存在的索引时:
{
"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 可忽略此错误。
索引被锁定 #
当索引被锁定时,删除操作会失败。
注意事项 #
- 不可逆操作:删除索引后无法恢复,除非有快照备份
- 资源释放:删除索引后,磁盘空间不会立即释放,需要等待段合并
- 别名影响:删除索引会同时删除指向该索引的所有别名
- 集群状态:删除大量索引可能影响集群性能
- 生产环境:建议在生产环境禁用
DELETE /_all操作





