全部產品
Search
文件中心

Tablestore:查詢後過濾

更新時間:Aug 12, 2026

使用 Tablestore Go SDK 在查詢和統計彙總之後過濾返回結果。

前提條件

安裝Tablestore Go SDK並初始化用戶端。

功能說明

查詢後過濾通過 SearchFilter 對查詢結果進行過濾。過濾在查詢和統計彙總計算之後執行,因此不會改變統計彙總結果,僅影響返回的行和匹配總數。該功能可用於調整查詢條件的執行階段;合理使用可以提升查詢效能。

重要

主查詢支援 Search 的全部查詢類型,但不建議使用 MatchAllQuery。過濾條件僅支援 TermQuery、TermsQuery、RangeQuery、ExistsQuery 及由這些類型組成的 BoolQuery。BoolQuery 僅支援 MustQueries、MustNotQueries 和 ShouldQueries,不支援 FilterQueries。過濾欄位僅支援 Keyword、Long 和 Double 類型,且必須啟用排序與統計彙總。過濾條件不支援設定 Weight。

filter := (&search.SearchFilter{}).SetQuery(
    &search.TermQuery{FieldName: "status", Term: "active"},
)
searchQuery := search.NewSearchQuery().
    SetQuery(&search.TermQuery{FieldName: "category", Term: "books"}).
    SetSearchFilter(filter).
    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)

參數說明

名稱

類型

說明

Query(必選)

search.Query

過濾條件。僅支援 TermQuery、TermsQuery、RangeQuery、ExistsQuery 及其 BoolQuery 組合。

傳回值

名稱

類型

說明

TotalCount

int64

匹配總行數。傳回值取決於 SetGetTotalCount 配置。

Rows

[]*tablestore.Row

本次查詢返回的行資料,數量不超過 SetLimit 指定的值。

SearchHits

[]*tablestore.SearchHit

查詢命中結果。配置摘要與高亮、嵌套 InnerHits 或需要相關性評分時,從該欄位讀取結果。

NextToken

[]byte

下一頁憑證。值非空時,將其傳入下一次查詢繼續讀取。

IsAllSuccess

bool

是否已成功查詢全部索引分割區。值為 false 時返回的是部分結果,TotalCount 可能小於實際匹配行數。

AggregationResults

search.AggregationResults

統計彙總結果。

GroupByResults

search.GroupByResults

分組結果。