Une requête par termes fonctionne comme une requête par terme, mais permet de spécifier plusieurs mots-clés pour rechercher les lignes de données correspondant à au moins l'un d'entre eux. Ce mécanisme équivaut à l'opérateur IN en SQL.
Prérequis
Initialisez une instance OTSClient. Pour plus d'informations, consultez la rubrique Initialiser une instance OTSClient.
Créez une table de données et insérez-y des données. Pour plus d'informations, consultez les rubriques Créer une table de données et Écrire des données.
Créez un index de recherche pour la table de données. Pour plus d'informations, consultez la rubrique Créer des index de recherche.
Paramètres
|
Paramètre |
Description |
|
TableName |
Nom de la table de données. |
|
IndexName |
Nom de l'index de recherche. |
|
Query |
Type de requête. Définissez le type sur TermsQuery. |
|
FieldName |
Nom du champ à interroger. |
|
Terms |
Mots-clés utilisés pour faire correspondre les valeurs de champ lors d'une requête par termes. Une ligne de données est renvoyée si au moins l'un des mots-clés correspond à la valeur du champ. |
|
Limit |
Nombre maximal de lignes à renvoyer. Pour obtenir uniquement le nombre de lignes répondant aux conditions sans renvoyer les données, définissez Limit sur 0. |
|
ColumnsToGet |
Indique s'il faut renvoyer toutes les colonnes des lignes répondant aux conditions. Spécifiez les paramètres ReturnAll et Columns. Par défaut, ReturnAll est défini sur false : toutes les colonnes ne sont pas renvoyées. Si ReturnAll est défini sur false, utilisez le paramètre Columns pour spécifier les colonnes à renvoyer. À défaut, seules les colonnes de clé primaire sont renvoyées. Si vous définissez ReturnAll sur true, toutes les colonnes des lignes correspondantes sont renvoyées. |
Exemples
L'exemple de code suivant montre comment interroger les lignes dont la valeur de la colonne Col_Keyword correspond exactement à « hangzhou » ou « tablestore ».
/**
* Query the rows in which the value of the Col_Keyword column exactly matches "hangzhou" or "tablestore" in the table.
*/
func TermsQuery(client *tablestore.TableStoreClient, tableName string, indexName string) {
searchRequest := &tablestore.SearchRequest{}
searchRequest.SetTableName(tableName)
searchRequest.SetIndexName(indexName)
query := &search.TermsQuery{} // Set the query type to TermsQuery.
query.FieldName = "Col_Keyword" // Set the field used to match the query conditions.
terms := make([]interface{}, 0)
terms = append(terms, "hangzhou")
terms = append(terms, "tablestore")
query.Terms = terms // Set the keywords used in the query to match the column values.
searchQuery := search.NewSearchQuery()
searchQuery.SetQuery(query)
searchQuery.SetLimit(100)
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("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 par terme, requête par termes, requête MatchAll, requête Match, requête MatchPhrase, requête Prefix, requête Range, requête Wildcard, requête Geo, requête Booléenne, requête vectorielle KNN, requête Nested et requête Exists. Ces méthodes vous permettent d'interroger les données selon plusieurs dimensions en fonction de vos besoins métier.
Vous pouvez trier ou paginer les lignes répondant aux conditions grâce aux fonctionnalités de tri et de pagination. Pour plus d'informations, consultez la rubrique Tri et pagination.
La fonctionnalité de regroupement (distinction) permet de condenser l'ensemble des résultats en fonction d'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 rubrique Regroupement (déduplication).
Pour analyser les données d'une table, utilisez la fonctionnalité d'agrégation de l'opération Search ou exécutez des instructions SQL. Par exemple, vous pouvez obtenir les valeurs minimales et maximales, la somme ainsi que le nombre total de lignes. Pour plus d'informations, consultez les rubriques Agrégation et Requête SQL.
Pour obtenir toutes les lignes répondant aux conditions 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 rubrique Effectuer un balayage parallèle.