*Redis FT.DROPINDEX 命令
FT.DROPINDEX 删除 RediSearch 索引及其关联数据结构。
*语法
FT.DROPINDEX index [DD | KEEPDD]
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| index | String | 是 | 索引名称 |
| DD | Flag | 否 | 删除索引同时删除底层文档数据(HASH/JSON) |
| KEEPDD | Flag | 否 | 仅删除索引,保留底层文档数据(默认) |
*返回值
- OK:索引删除成功
- Error:索引不存在
*时间复杂度
O(N),N 为索引中的文档数量。删除底层数据时额外 O(M),M 为键数量。
*示例
*仅删除索引(保留数据)
> FT.DROPINDEX idx:products
OK
*删除索引及数据
> FT.DROPINDEX idx:temp DD
OK
*显式保留数据
> FT.DROPINDEX idx:articles KEEPDD
OK
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| Index not found | 索引不存在 | 确认索引名称,可用 FT._LIST 查看 |
*最佳实践
- 默认 KEEPDD 安全,不会误删业务数据
- 需要清理数据时使用 DD,但需谨慎确认
- 重建索引前先 DROPINDEX,再 FT.CREATE
- 生产环境删除前先确认索引无查询依赖
*FAQ
Q1: FT.DROPINDEX 和 FT.DROPINDEX DD 有什么区别? A: 默认仅删除索引元数据;DD 同时删除底层 Redis 键(HASH/JSON 文档)。
Q2: 删除索引后别名会怎样? A: 关联别名会自动删除。
Q3: 可以删除正在被查询的索引吗? A: 可以,但正在进行的查询可能会收到错误。
Q4: 误删索引后如何恢复? A: 若未使用 DD,只需重新 FT.CREATE,数据会自动重新索引。若使用了 DD,数据已删除,需从备份恢复。