Redis Hash嵌套对象查询:如何用FT.Search筛选wireless为true的数据
正确查询Redis Hash中嵌套布尔字段的方法
修正字段路径错误
你当前查询用的@colors.wireless完全不对,目标字段实际是connection.wireless,先把字段路径改过来。确保索引已正确定义嵌套字段
因为你用Hash存储数据,Redis Search需要在创建索引时明确声明嵌套结构的字段。比如创建索引的命令要包含嵌套字段的定义:FT.CREATE idx:headphones ON HASH PREFIX 1 headphones: SCHEMA connection.wireless BOOLEAN connection.type TEXT name TEXT description TEXT price NUMERIC stock NUMERIC colors TAG embedding VECTOR FLAT 6 DIM 4 DISTANCE_METRIC L2核心是
connection.wireless BOOLEAN这部分,要和你Hash中存储的键名对应(比如你存Hash时,嵌套的wireless字段对应的键名得是connection.wireless)。正确的查询语句
查询布尔值不需要加引号,直接写对应的布尔值即可。用Node.js Redis客户端的正确写法:await this.client.ft.search(index, `@connection.wireless:${wirelessStatus}`);比如当
wirelessStatus为true时,实际执行的查询条件就是@connection.wireless:true。额外注意点
- 如果你的Hash存储时嵌套字段的键名是下划线分隔(比如
connection_wireless),那索引定义和查询里的字段名也要改成对应的形式 - Redis Search的布尔字段只识别小写的
true/false,查询时别用大写或其他格式
- 如果你的Hash存储时嵌套字段的键名是下划线分隔(比如
内容的提问来源于stack exchange,提问作者meursault
相关产品推荐
相关产品推荐

