/index/search/agg 接口用于实现聚合,本页面主要介绍如何对指定 index 检索结果进行聚合统计。
聚合统计能指定字段进行分组聚合,并可添加过滤操作,最终得到相应的聚合统计结果,辅助了解数据分布等情况。
注意
索引需要包含至少一个枚举类型(string、int64或bool类型)的标量索引字段。
说明
请求向量数据库 VikingDB 的 OpenAPI 接口时,需要构造签名进行鉴权,详细的 OpenAPI 签名调用方法请参见 API签名调用指南。
URI | /api/index/search/agg | 统一资源标识符 |
---|---|---|
请求方法 | POST | 客户端对向量数据库服务器请求的操作类型 |
请求头 | Content-Type: application/json | 请求消息类型 |
Authorization: HMAC-SHA256 *** | 鉴权 |
参数名 | 类型 | 必选 | 备注 | 子参数 | 类型 | 备注 | 必选 |
---|---|---|---|---|---|---|---|
collection_name/collection_alias | string | 是 | collection名 | ||||
index_name | string | 是 | index名 | ||||
search | map | 否 | 检索参数 | filter | map | 过滤条件,使用方式同index检索接口 | 否 |
partition | int64 / string | 子索引名,类型与 partition_by 的 field_type一致,字段值对应 partition_by 的 field_value
不设置默认为"default" | 否 | ||||
agg | map | 是 | 聚合参数 | op | string | 目前仅支持count。使用count算子时,索引中必须至少存在一个string、int64或bool类型的标量索引字段。 | 是 |
field | string | 对指定字段名进行聚合。字段类型支持string,int64,bool且必须为标量索引字段。 | 否 | ||||
cond | map,否 | 类似SQL里group by的having 子句。仅当field字段存在时,才生效。对于count算子,支持gt,表示仅返回大于阈值的结果项。 | 否 |
示例1:对指定index下数据的数量统计。
{ "collection_name": "coll_name", "index_name": "idx_name", "search": {}, "agg": { "op": "count" } }
示例2:对指定索引下数据按条件筛选排除后,针对特定字段进行聚合统计,只返回统计结果大于5的情况。
{ "collection_name": "coll_name", "index_name": "idx_name", "search": { "filter": { "op": "must_not", "field": "f_string", "conds": ["doc1"] } }, "agg": { "op": "count", "field": "f_string", "cond": { "gt": 5 } } }
示例1
{ "code":0, "msg":"success", "request_id":"02173373312268600000000000000000000ffff0a0048d51718ba" "data": { "agg_op": "count", "group_by_field": "__NONE__", "agg_result": { "__TOTAL__": 10001 } } }
示例2
{ "code":0, "msg":"success", "request_id":"02173373312268600000000000000000000ffff0a0048d51718ba" "data": { "agg_op": "count", "group_by_field": "f_doc", "agg_result": { "doc1": 234, "doc2": 221 } } }