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

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

👋 欢迎查阅 Stackhero 文档!

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

  • 集成 Redis Commander Web 管理界面
  • 无限制的消息大小与传输。
  • 一键完成升级,操作便捷。
  • 基于专属私有基础设施,实现卓越性能与强大安全性

节省时间简化运维:仅需 5 分钟即可体验 Stackhero 的 Redis cloud 托管 方案!

您只需声明一次索引,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

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

# 对名称进行全文搜索,并限定价格区间
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 和标准字段名。