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