Tablestore Go SDK を使用して、クエリおよび集約の処理後に結果をフィルターします。
前提条件
Tablestore Go SDK をインストールし、クライアントを初期化してください。
説明
ポストクエリフィルターでは、 SearchFilter を使用してクエリ結果をフィルターします。このフィルターはクエリおよび集約の処理後に適用されます。そのため、集約結果は変更されず、返される行と一致した行数のみに影響します。この機能を使用すると、クエリ条件を評価するタイミングを制御できます。適切に使用することで、クエリパフォーマンスを向上できます。
メインクエリは Search がサポートするすべてのクエリタイプをサポートしますが、MatchAllQuery は推奨されません。フィルターは TermQuery、TermsQuery、RangeQuery、ExistsQuery、およびこれらのクエリタイプで構成された BoolQuery のみをサポートします。BoolQuery は MustQueries、MustNotQueries、ShouldQueries をサポートしますが、FilterQueries はサポートしません。フィルターできるのはキーワード、Long、Double フィールドのみで、対象フィールドではソートと集約を有効にする必要があります。フィルター条件は重みをサポートしません。
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 |
検索ヒットです。ハイライト、nested inner hits、または関連度スコアを使用する場合は、このフィールドを読み取ります。 |
|
NextToken |
[]byte |
次のページのトークンです。値が空でない場合は、次のクエリに渡します。 |
|
IsAllSuccess |
bool |
すべてのインデックスパーティションがクエリされたかどうかを示します。値が false の場合は部分的な結果が返され、TotalCount は実際の一致した行数より少ない可能性があります。 |
|
AggregationResults |
search.AggregationResults |
集約結果です。 |
|
GroupByResults |
search.GroupByResults |
グループ化結果です。 |