使用 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 |
分組結果。 |