Effectuez une requête de plage pour interroger les données situées dans la plage spécifiée. Si le type d'un champ est TEXT, ses valeurs sont tokenisées. Une ligne satisfait aux conditions de la requête lorsqu'au moins un de ses jetons correspond à la plage de requête.
Prérequis
Initialisez une instance OTSClient. Pour plus d'informations, consultez Initialiser une instance OTSClient.
Créez un tableau de données et écrivez-y des données. Pour plus d'informations, consultez 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 Créer des index de recherche.
Paramètres
|
Parameter |
Description |
|
TableName |
Nom du tableau de données. |
|
IndexName |
Nom de l'index de recherche. |
|
Query |
Type de requête. Définissez le type de requête sur RangeQuery. |
|
FieldName |
Nom du champ à faire correspondre. |
|
From |
Valeur de début de la requête. Utilisez GT ou GTE pour spécifier une plage. GT indique que les valeurs de la plage sont supérieures à la valeur spécifiée. GTE indique que les valeurs de la plage sont supérieures ou égales à la valeur spécifiée. |
|
To |
Valeur de fin de la requête. Utilisez LT ou LTE pour spécifier une plage. LT indique que les valeurs de la plage sont inférieures à la valeur spécifiée. LTE indique que les valeurs de la plage sont inférieures ou égales à la valeur spécifiée. |
|
IncludeLower |
Indique si la valeur du paramètre From doit être incluse dans la réponse. Ce paramètre est de type BOOLEAN. |
|
IncludeUpper |
Indique si la valeur du paramètre To doit être incluse dans la réponse. Ce paramètre est de type BOOLEAN. |
|
Sort |
Méthode de tri. Pour plus d'informations, consultez Effectuer un tri et une pagination. |
|
ColumnsToGet |
Indique s'il faut retourner toutes les colonnes de chaque ligne satisfaisant aux conditions de la requête. Vous pouvez spécifier les paramètres ReturnAll et Columns. Par défaut, le paramètre ReturnAll est défini sur false, ce qui signifie que toutes les colonnes ne sont pas retournées. Si le paramètre ReturnAll est défini sur false, utilisez le paramètre Columns pour spécifier les colonnes à retourner. Si vous ne spécifiez pas le paramètre Columns, seules les colonnes de clé primaire sont retournées. Si vous définissez ReturnAll sur true, toutes les colonnes sont retournées. |
Exemple de code
L'exemple de code suivant montre comment interroger les lignes dont la valeur de Col_Long est supérieure à 3. Tablestore trie les résultats de la requête en fonction de la valeur de la colonne Col_Long par ordre décroissant.
/**
* Query the rows in which the value of the Col_Long column is greater than 3 in a table. Tablestore sorts the query results based on the value of the Col_Long column in descending order.
*/
func RangeQuery(client *tablestore.TableStoreClient, tableName string, indexName string) {
searchRequest := &tablestore.SearchRequest{}
searchRequest.SetTableName(tableName)
searchRequest.SetIndexName(indexName)
searchQuery := search.NewSearchQuery()
rangeQuery := &search.RangeQuery{} // Set the query type to RangeQuery.
rangeQuery.FieldName = "Col_Long" // Specify the name of the column that you want to query.
rangeQuery.GT(3) // Specify the range of the column value, which is greater than 3.
searchQuery.SetQuery(rangeQuery)
// Sort the query results based on the value of the Col_Long column in descending order.
searchQuery.SetSort(&search.Sort{
[]search.Sorter{
&search.FieldSort{
FieldName: "Col_Long",
Order: search.SortOrder_DESC.Enum(),
},
},
})
searchRequest.SetSearchQuery(searchQuery)
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 de requête suivantes : requête de terme, requête de termes, requête match all, requête de correspondance, requête de correspondance de phrase, requête de préfixe, requête de plage, requête avec caractère générique, requête géographique, requête booléenne, requête vectorielle KNN, requête imbriquée et requête exists. Utilisez ces méthodes pour interroger des données selon plusieurs dimensions en fonction de vos besoins métier.
Triez ou paginez les lignes satisfaisant aux conditions de la requête grâce aux fonctionnalités de tri et de pagination. Pour plus d'informations, consultez Tri et pagination.
Utilisez la fonctionnalité de regroupement (distinct) pour regrouper l'ensemble de 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 de la requête. Pour plus d'informations, consultez Regroupement (déduplication).
Pour analyser les données d'un tableau de données, 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 et le nombre total de lignes. Pour plus d'informations, consultez Agrégation et Requête SQL.
Pour obtenir toutes les lignes satisfaisant aux conditions de la requête sans avoir besoin de les trier, appelez les opérations ParallelScan et ComputeSplits afin d'utiliser la fonctionnalité de balayage parallèle. Pour plus d'informations, consultez Effectuer un balayage parallèle.