SearchAgg 用于实现聚合,本页面主要介绍如何对指定 index 检索结果进行聚合统计。
聚合统计能指定字段进行分组聚合,并可添加过滤操作,最终得到相应的聚合统计结果,辅助了解数据分布等情况。
注意
索引需要包含至少一个枚举类型(string、int64或bool类型)的标量索引字段。
参数名 | 类型 | 必选 | 备注 | 子参数 | 类型 | 备注 | 必选 |
---|---|---|---|---|---|---|---|
agg | map | 是 | 聚合参数 | op | string | 目前仅支持count。使用count算子时,索引中必须至少存在一个string、int64或bool类型的标量索引字段。 | 是 |
field | string | 对指定字段名进行聚合。字段类型支持string,int64,bool且必须为标量索引字段。 | 否 | ||||
cond | map | 类似SQL里group by的having 子句。仅当field字段存在时,才生效。对于count算子,支持gt,表示仅返回大于阈值的结果项。 | 否 |
// 获取指定索引,程序初始化时调用即可,无需重复调用 index, _ := service.GetIndex("go", "goIndex")
searchAggOpt := vikingdb.NewSearchAggOptions(). SetFilter(map[string]interface{}{ "op": "range", "field": "f_int64", "gt": 10, }). SetAgg(map[string]interface{}{ "op": "count", "field": "f_string", "gt": 0, }) aggResult, err := index.SearchAgg(searchAggOpt) if err != nil { panic(err) } fmt.Println(aggResult.AggOp) fmt.Println(aggResult.GroupByField) fmt.Println(aggResult.AggResult)
Java调用执行上面的任务,返回 List<Data> 。Data 实例包含的属性如下表所示。
属性 | 说明 |
---|---|
agg_op | 算子类型 |
group_by_field | 请求返回中的 fields 字段,即用哪个字段进行聚合的 |
agg_result | 聚合处理的结果值 |