

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# FT.AGGREGATE
<a name="vector-search-commands-ft.aggregate"></a>

FT.SEARCH 命令的超集，允许对查询表达式选择的键进行大量额外处理。

**语法**

```
FT.AGGREGATE index query
  [LOAD * | [count field [field ...]]]
  [TIMEOUT timeout]
  [PARAMS count name value [name value ...]]
  [FILTER expression]
  [LIMIT offset num]  
  [GROUPBY count property [property ...] [REDUCE function count arg [arg ...] [AS name] [REDUCE function count arg [arg ...] [AS name] ...]] ...]] 
  [SORTBY count [ property ASC | DESC [property ASC | DESC ...]] [MAX num]] 
  [APPLY expression AS name]
```
+ FILTER、LIMIT、GROUPBY、SORTBY 和 APPLY 子句可以任意次数重复，并且可以自由混合使用。它们按指定的顺序应用，其中一个子句的输出作为下一个子句的输入。
+ 在上述语法中，“属性”要么是在 [FT.CREATE](https://docs.aws.amazon.com/memorydb/latest/devguide/vector-search-commands-ft.create.html) 命令中为此索引声明的字段，要么是之前的 APPLY 子句或 REDUCE 函数的输出。
+ LOAD 子句仅限于加载已在索引中声明的字段。“LOAD \$1”将加载索引中声明的所有字段。
+ 支持以下 reducer 函数：COUNT、COUNT\$1DISTINCTISH、SUM、MIN、MAX、AVG、STDDEV、QUANTILE、TOLIST、FIRST\$1VALUE 和 RANDOM\$1SAMPLE。有关更多信息，请参阅[聚合](https://redis.io/docs/interact/search-and-query/search/aggregations/)。
+ LIMIT <offset><count>：保留从 <offset> 开始的记录，并持续保留 <count> 条记录，所有其他记录都将丢弃。
+ PARAMS：键值对数量的两倍。可以在查询表达式中引用参数 key/value 对。

**Return**

返回数组或错误响应。
+ 如果操作成功完成，则返回一个数组。第一个元素是没有特殊含义的整数（应忽略）。其余元素是最后一个阶段输出的结果。每个元素都是由字段名称和值对组成的数组。
+ 如果索引正在回填，该命令会立即返回错误响应。
+ 如果超时，该命令将返回错误响应。