gpt4 book ai didi

redis - 无法使聚合正常工作。

转载 作者:IT王子 更新时间:2023-10-29 06:12:47 26 4
gpt4 key购买 nike

我正在探索 RediSearch,我想我应该试试聚合功能,但遇到了障碍。

我好像得不到好结果。

出于测试目的,我创建了一个基本的索引/架构,如下所示:

FT.CREATE test SCHEMA field TEXT

FT.ADD test 1A 1 FIELDS field hello
FT.ADD test 2A 1 FIELDS field hello
FT.ADD test 3A 1 FIELDS field hello
FT.ADD test 4A 1 FIELDS field world

接下来,我发出了以下查询:

FT.AGGREGATE test "*" GROUPBY 1 @field REDUCE COUNT 0 AS agg

我的期望是我得到的结果表明 hello 出现了三次而 world 出现了一次......但是我得到了以下结果:

1) (integer) 1
2) 1) "field"
2) (nil)
3) "agg"
4) "4"

我认为这很简单......但我显然做错了什么。

此外,以下是 MODULE LIST 命令的输出:

1) 1) "name"
2) "ft"
3) "ver"
4) (integer) 10300
2) 1) "name"
2) "ReJSON"
3) "ver"
4) (integer) 10001

任何帮助都会很棒。

谢谢!

最佳答案

事实证明,我应该更好地阅读文档。

来自 aggregations documentation 中的部分他们在描述 FT.AGGREGATE 命令参数的地方提到了 LOAD {nargs} {property},他们说:

Load document fields from the document HASH objects. This should be avoided as a general rule of thumb. Fields needed for aggregations should be stored as SORTABLE, where they are available to the aggregation pipeline with very low latency. LOAD hurts the performance of aggregate queries considerably since every processed record needs to execute the equivalent of HMGET against a redis key, which when executed over millions of keys, amounts to very high processing times.

从我原来的问题中的查询示例:

FT.AGGREGATE 测试 "*"GROUPBY 1 @field REDUCE COUNT 0 AS agg

由于模式定义没有将 field 定义为 SORTABLE 我将不得不 LOAD “field” 以执行聚合在上面。

FT.AGGREGATE 测试 "*"LOAD 1 @field GROUPBY 1 @field REDUCE COUNT 0 AS agg

但是,根据文档,LOAD 会损害性能,因此我应该将要聚合的字段定义为 SORTABLE

FT.CREATE 测试 SCHEMA 字段 TEXT SORTABLE

有了正确定义的模式,我的原始查询就可以工作了。

关于redis - 无法使聚合正常工作。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53074183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com