Redis®*: 对文档建立索引与搜索

本文件是搜索与 JSON指南的一部分。您可以在这里查看完整指南:使用 Redis 查询引擎高效存储和查询 JSON 文档

👋 欢迎来到 Stackhero 文档!

Stackhero 提供即开即用的 Redis cloud 解决方案,带来多项优势,包括:

  • 集成 Redis Commander 网页界面
  • 无限制的消息大小与传输。
  • 只需一键即可轻松完成更新
  • 依托专属私有基础设施,实现卓越性能与强大安全性

节省时间简化您的工作流程:只需 5 分钟即可体验 Stackhero 的 Redis cloud hosting 方案!

您只需声明一次索引。Redis 会自动为所有匹配指定前缀的 key(包括索引创建前已存在的 key)维护索引的实时更新。

FT.CREATE productsIndex
  ON JSON
  PREFIX 1 product:
  SCHEMA
    $.name AS name TEXT
    $.brand AS brand TAG
    $.price AS price NUMERIC SORTABLE
    $.tags[*] AS tags TAG

现在,您可以执行如下查询:

# 对 name 字段进行全文搜索,并限定价格区间
FT.SEARCH productsIndex "@name:(espresso) @price:[0 500]"

# 精确匹配品牌,并按价格排序
FT.SEARCH productsIndex "@brand:{Bianca}" SORTBY price ASC

# 前缀搜索,适用于自动补全场景
FT.SEARCH productsIndex "@name:(espr*)"

Redis 还可以直接在索引上进行聚合分析,无需导出数据即可满足分析型查询需求:

FT.AGGREGATE productsIndex "*"
  GROUPBY 1 @brand
  REDUCE COUNT 0 AS products
  REDUCE AVG 1 @price AS averagePrice
  SORTBY 2 @products DESC

如果您以普通 hash 而非 JSON 存储数据,可以在 schema 中使用 ON HASH 和标准字段名。