Une requête Term permet d'interroger les valeurs de champ correspondant exactement au mot-clé spécifié. Ce type de requête s'apparente à une correspondance de chaîne. Si vous interrogez une colonne TEXT et qu'au moins un jeton d'une ligne correspond exactement au mot-clé, la ligne satisfait aux conditions de la requête. Le mot-clé n'est pas tokenisé.
Prérequis
Initialisez une instance OTSClient. Pour plus d'informations, consultez la section Initialiser une instance OTSClient.
Créez un tableau de données et écrivez-y des données. Pour plus d'informations, consultez les sections Créer un tableau de données et Écrire des données.
Créez un index de recherche pour le tableau de données. Pour plus d'informations, consultez la section Créer des index de recherche.
Paramètres
|
Paramètre |
Description |
|
TableName |
Nom du tableau de données. |
|
IndexName |
Nom de l'index de recherche. |
|
Query |
Type de requête. Définissez-le sur TermQuery. |
|
FieldName |
Nom du champ à faire correspondre. |
|
Term |
Mot-clé utilisé pour faire correspondre les valeurs de champ lors d'une requête Term. Ce mot-clé n'est pas tokenisé. L'intégralité du mot-clé sert à la correspondance avec les valeurs de champ. Si le champ est de type TEXT, Tablestore tokenise la chaîne et utilise les jetons pour la correspondance avec le mot-clé. Une ligne satisfait aux conditions de la requête si au moins un de ses jetons correspond exactement au mot-clé. Par exemple, si la valeur d'un champ TEXT dans une ligne est « tablestore is cool », elle est tokenisée en « tablestore », « is » et « cool ». La ligne satisfait aux conditions de la requête si vous spécifiez « tablestore », « is » ou « cool » comme mot-clé de correspondance. |
|
ColumnsToGet |
Indique s'il faut renvoyer tous les champs de chaque ligne satisfaisant aux conditions de la requête. Spécifiez les paramètres ReturnAll et Columns. Par défaut, ReturnAll est défini sur false : tous les champs ne sont pas renvoyés. Si ReturnAll est false, utilisez le paramètre Columns pour spécifier les champs à renvoyer. À défaut, seuls les champs de clé primaire sont renvoyés. Si vous définissez ReturnAll sur true, tous les champs sont renvoyés. |
|
GetTotalCount |
Indique s'il faut renvoyer le nombre total de lignes satisfaisant aux conditions de la requête. La valeur par défaut est false : le nombre total de lignes n'est pas renvoyé. La définition de ce paramètre sur true dégrade les performances de la requête. |
Exemples
L'exemple de code suivant montre comment interroger les lignes dont la valeur de la colonne Col_Keyword correspond exactement à hangzhou dans le tableau de données :
/**
* Query the rows in which the value of the Col_Keyword field exactly matches "hangzhou" in a table.
*/
func TermQuery(client *tablestore.TableStoreClient, tableName string, indexName string) {
searchRequest := &tablestore.SearchRequest{}
searchRequest.SetTableName(tableName)
searchRequest.SetIndexName(indexName)
query := &search.TermQuery{} // Set the query type to TermQuery.
query.FieldName = "Col_Keyword" // Specify the name of the field that you want to query.
query.Term = "hangzhou" // Specify the keyword that is used to match field values.
searchQuery := search.NewSearchQuery()
searchQuery.SetQuery(query)
searchQuery.SetGetTotalCount(true)
searchRequest.SetSearchQuery(searchQuery)
// Return all columns in the rows that meet the query conditions.
searchRequest.SetColumnsToGet(&tablestore.ColumnsToGet{
ReturnAll:true,
})
searchResponse, err := client.Search(searchRequest)
if err != nil {
fmt.Printf("%#v", err)
return
}
fmt.Println("IsAllSuccess: ", searchResponse.IsAllSuccess) // Check whether all rows that meet the query conditions are returned.
fmt.Println("TotalCount: ", searchResponse.TotalCount) // Display the total number of rows that meet the query conditions instead of the number of returned rows.
fmt.Println("RowCount: ", len(searchResponse.Rows))
for _, row := range searchResponse.Rows {
jsonBody, err := json.Marshal(row)
if err != nil {
panic(err)
}
fmt.Println("Row: ", string(jsonBody))
}
}
FAQ
Références
-
Lorsque vous utilisez un index de recherche pour interroger des données, vous pouvez recourir aux méthodes suivantes : requête Term, requête Terms, requête Match All, requête Match, requête Match Phrase, requête Prefix, requête Range, requête Wildcard, requête Geo, requête Booléenne, requête de vecteur KNN, requête Nested et requête Exists. Ces méthodes vous permettent d'interroger des données selon plusieurs dimensions en fonction de vos besoins métier.
Vous pouvez trier ou paginer les lignes satisfaisant aux conditions de la requête grâce aux fonctionnalités de tri et de pagination. Pour plus d'informations, consultez la section Tri et pagination.
Utilisez la fonctionnalité de collapse (distinction) pour regrouper l'ensemble de résultats selon une colonne spécifique. Ainsi, les données du type spécifié n'apparaissent qu'une seule fois dans les résultats. Pour plus d'informations, consultez la section Collapse (dé-duplication).
Pour analyser les données d'un tableau, utilisez la fonctionnalité d'agrégation de l'opération Search ou exécutez des instructions SQL. Vous pouvez ainsi obtenir les valeurs minimales et maximales, la somme ainsi que le nombre total de lignes. Pour plus d'informations, consultez les sections Agrégation et Requête SQL.
Pour obtenir toutes les lignes satisfaisant aux conditions de la requête sans les trier, appelez les opérations ParallelScan et ComputeSplits afin d'utiliser la fonctionnalité de balayage parallèle. Pour plus d'informations, consultez la section Effectuer un balayage parallèle.