*Redis FT.ALIASADD 命令

FT.ALIASADD 为现有 RediSearch 索引创建一个别名,允许通过别名引用索引。


*语法

FT.ALIASADD alias index

*参数说明

参数 类型 必填 说明
alias String 别名名称
index String 现有索引名称

*返回值

  • OK:别名添加成功
  • Error:索引不存在或别名已被其他索引使用

*时间复杂度

O(1)

*

*示例

*基本用法

> FT.CREATE idx:products ON HASH PREFIX 1 product: SCHEMA name TEXT price NUMERIC
OK
> FT.ALIASADD products idx:products
OK
> FT.SEARCH products "phone"
1) (integer) 1
2) "product:1"
3) 1) "name"
   2) "smartphone"

*使用别名进行搜索

> FT.ALIASADD articles idx:articles_v1
OK
> FT.SEARCH articles "redis"
1) (integer) 5
...

*常见错误

错误 原因 解决
Index not found 索引不存在 确认索引名称正确,先创建索引
Alias already exists 别名已被其他索引用 先用 FT.ALIASDEL 删除旧别名

*最佳实践

  • 使用别名实现索引无缝切换(如版本升级、重建索引)
  • 应用代码中引用别名而非实际索引名,便于运维变更
  • 配合 FT.ALIASUPDATE 实现原子切换

*FAQ

Q1: 别名和索引名可以相同吗? A: 不建议,会造成混淆。别名应使用语义化名称,如 products 指向 idx:products_v2

Q2: 一个索引可以有多个别名吗? A: 可以,一个索引支持多个别名,但一个别名只能指向一个索引。

Q3: 删除索引后别名会怎样? A: 删除索引会自动删除关联的别名。若需保留别名,应先通过 FT.ALIASUPDATE 将别名指向其他索引。

Q4: 别名支持在聚合查询中使用吗? A: 支持,所有接受索引名的命令(FT.SEARCHFT.AGGREGATE 等)均可使用别名。