Utilisez le SDK Tablestore pour Go afin de filtrer les résultats après le traitement des requêtes et des agrégations.
Prérequis
Installez le SDK Go Tablestore et initialisez un client.
Description
Un filtre post-requête utilise SearchFilter pour filtrer les résultats d'une requête. Ce filtre s'applique après le traitement de la requête et des agrégations. Il ne modifie donc pas les résultats d'agrégation et n'affecte que les lignes renvoyées ainsi que le nombre de lignes correspondantes. Cette fonctionnalité permet de contrôler le moment où une condition de requête est évaluée. Une utilisation appropriée peut améliorer les performances des requêtes.
La requête principale prend en charge tous les types de requête pris en charge par Search, mais l'utilisation de MatchAllQuery n'est pas recommandée. Un filtre prend uniquement en charge TermQuery, TermsQuery, RangeQuery, ExistsQuery et les valeurs BoolQuery composées de ces types de requête. BoolQuery prend en charge MustQueries, MustNotQueries et ShouldQueries, mais pas FilterQueries. Seuls les champs Keyword, Long et Double peuvent être filtrés ; le tri et l'agrégation doivent être activés pour le champ. Une condition de filtre ne prend pas en charge 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)
Paramètres
|
Nom |
Type |
Description |
|
Query (obligatoire) |
search.Query |
Condition de filtre. Les types TermQuery, TermsQuery, RangeQuery, ExistsQuery et les combinaisons BoolQuery de ces types sont pris en charge. |
Réponse
|
Nom |
Type |
Description |
|
TotalCount |
int64 |
Nombre total de lignes correspondantes. La valeur dépend de SetGetTotalCount. |
|
Rows |
[]*tablestore.Row |
Lignes renvoyées par la requête actuelle. Le nombre ne dépasse pas la valeur spécifiée par SetLimit. |
|
SearchHits |
[]*tablestore.SearchHit |
Résultats de recherche. Consultez ce champ lorsque vous utilisez la mise en surbrillance, les hits internes imbriqués ou les scores de pertinence. |
|
NextToken |
[]byte |
Jeton pour la page suivante. Si la valeur n'est pas vide, transmettez-la à la requête suivante. |
|
IsAllSuccess |
bool |
Indique si toutes les partitions d'index ont été interrogées. Si la valeur est false, des résultats partiels sont renvoyés et TotalCount peut être inférieur au nombre réel de lignes correspondantes. |
|
AggregationResults |
search.AggregationResults |
Résultats d'agrégation. |
|
GroupByResults |
search.GroupByResults |
Résultats de regroupement. |