如何使用RediSearch搜索、分组并获取每组首个JSON文档
Redis Stack 实现搜索、分组并获取分组首个文档
问题说明
原索引中ItemDescription被定义为TAG类型,而TAG仅支持精确匹配/多值标签查询,无法实现"包含adidas"的全文搜索需求。因此需要先调整索引结构,再通过聚合查询完成分组和取首个文档的操作。
步骤1:重建索引(适配全文搜索)
先删除原索引,再创建新索引将ItemDescription改为TEXT类型:
FT.DROPINDEX Product-idx FT.CREATE Product-idx ON JSON PREFIX 1 Product: SCHEMA $.ItemCode AS ItemCode TAG $.ItemDescription AS ItemDescription TEXT $.Barcodes AS Barcodes TAG
步骤2:执行搜索、分组并获取每组首个文档
使用FT.AGGREGATE命令完成所有需求:
FT.AGGREGATE Product-idx '@ItemDescription:adidas' GROUPBY 1 @ItemDescription REDUCE FIRST_VALUE 1 '$' AS first_document LIMIT 0 1000
命令解释
@ItemDescription:adidas:匹配ItemDescription字段中包含"adidas"的文档GROUPBY 1 @ItemDescription:按ItemDescription字段分组REDUCE FIRST_VALUE 1 '$' AS first_document:提取每组中的第一个完整JSON文档($代表整个JSON对象)LIMIT 0 1000:返回前1000组结果,可根据实际需求调整数量
内容的提问来源于stack exchange,提问作者Tejaromalius
相关产品推荐
相关产品推荐

