使用 Tablestore Go SDK 按指定字段折叠查询结果,每个不同字段值只返回一行。
前提条件
安装Tablestore Go SDK并初始化客户端。
功能说明
折叠(去重)可与任意查询类型配合使用,按指定字段值对查询结果分组,每组只返回排序后的第一行。TotalCount 仍表示折叠前的匹配总行数;无法获取折叠后的总分组数。用于折叠的字段必须启用排序与统计聚合,仅支持 Long、Double 和 Keyword 类型,不支持数组字段。
重要
折叠查询仅支持 Offset 和 Limit 翻页,不支持 Token 翻页。Offset + Limit 最大为 100000,因此最多返回 100000 个分组。
同时使用统计聚合和折叠时,统计聚合作用于折叠前的结果集。
searchQuery := search.NewSearchQuery().
SetQuery(&search.MatchAllQuery{}).
SetCollapse(&search.Collapse{FieldName: "category"}).
SetGetTotalCount(true)
response, err := client.Search(&tablestore.SearchRequest{
TableName: "example_table",
IndexName: "example_index",
SearchQuery: searchQuery,
})
if err != nil {
log.Fatal(err)
}
fmt.Println(response.TotalCount)
fmt.Println(response.Rows)
参数说明
|
名称 |
类型 |
说明 |
|
FieldName(必选) |
string |
用于折叠结果的字段名称。 |
返回值
|
名称 |
类型 |
说明 |
|
TotalCount |
int64 |
匹配总行数。返回值取决于 SetGetTotalCount 配置。 |
|
Rows |
[]*tablestore.Row |
本次查询返回的行数据,数量不超过 SetLimit 指定的值。 |
|
SearchHits |
[]*tablestore.SearchHit |
查询命中结果。配置摘要与高亮、嵌套 InnerHits 或需要相关性评分时,从该字段读取结果。 |
|
IsAllSuccess |
bool |
是否已成功查询全部索引分区。值为 false 时返回的是部分结果,TotalCount 可能小于实际匹配行数。 |
|
AggregationResults |
search.AggregationResults |
统计聚合结果。 |
|
GroupByResults |
search.GroupByResults |
分组结果。 |
该文章对您有帮助吗?