Redis多过滤条件聚合查询

问题描述 投票:0回答:1

我正在尝试运行聚合查询,同时还检查哈希的位置是否在边界框中。

我的哈希:

FT.CREATE idx ON HASH PREFIX 1 "managmentScan:" SCHEMA bin NUMERIC SORTABLE x NUMERIC SORTABLE y NUMERIC SORTABLE grade NUMERIC SORTABLE latest_mngmt TAG SORTABLE

HSET managmentScan:123 bin 123 x 50 y 15 grade 20 latest_mngmt "owner123"

所以我尝试像这样进行过滤并不断收到错误:

> FT.AGGREGATE idx "*" FILTER "@x > 0 AND @x < 100 AND @y > 0 AND @y < 100" GROUPBY 1 @latest_mngmt REDUCE AVG 1 @grade AS average_grade SORTBY 2 @average_grade ASC LIMIT 0 5
"Syntax error at offset 7 near 'AND'"

> FT.AGGREGATE idx "*" FILTER "@x > 0 x < 100 @y > 0 @y < 100" GROUPBY 1 @latest_mngmt REDUCE AVG 1 @grade AS average_grade SORTBY 2 @average_grade ASC LIMIT 0 5
"Syntax error at offset 7 near 'x'"

> FT.AGGREGATE idx "*" FILTER "@x:[0 50] AND @y:[0 50]" GROUPBY 1 @latest_mngmt REDUCE AVG 1 @grade AS average_grade SORTBY 2 @average_grade ASC LIMIT 0 5
"Syntax error at offset 4 near '0'"

当我只尝试一个过滤器时,它在这里工作:

> FT.AGGREGATE idx "*" FILTER "@x > 0" GROUPBY 1 @latest_mngmt REDUCE AVG 1 @grade AS average_grade SORTBY 2 @average_grade ASC LIMIT 0 5
1) "1"
2) 1) "latest_mngmt"
   2) "owner123"
   3) "average_grade"
   4) "20"

有谁知道这是为什么吗?

redis
1个回答
0
投票

我尝试用 && 替换 AND,现在似乎可以工作了。不知道为什么网上找不到。

> FT.AGGREGATE idx "*" FILTER "@x > 0 && @x < 100 && @y > 0 && @y < 100" GROUPBY 1 @latest_mngmt REDUCE AVG 1 @grade AS average_grade SORTBY 2 @average_grade ASC LIMIT 0 5
1) "1"
2) 1) "latest_mngmt"
   2) "owner123"
   3) "average_grade"
   4) "20"
© www.soinside.com 2019 - 2024. All rights reserved.