折叠(去重)

更新时间:
复制 MD 格式

使用 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

分组结果。