Si une requête renvoie de nombreux résultats partageant une même valeur dans une colonne spécifique, utilisez la fonctionnalité de regroupement. Celle-ci groupe l'ensemble des résultats selon cette colonne et garantit que chaque valeur unique n'apparaît qu'une seule fois. Vous obtenez ainsi un ensemble de données plus diversifié.
Prérequis
Initialisez une instance OTSClient. Pour plus d'informations, consultez Initialiser une instance OTSClient.
Créez une table de données et écrivez-y des données. Pour plus d'informations, consultez les rubriques Créer des tables 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 un index de recherche.
Notes
La fonctionnalité
collapseprend en charge la pagination uniquement via les paramètresoffsetetlimit. Elle ne prend pas en charge la pagination par jeton.Lorsque vous combinez l'agrégation statistique et la fonctionnalité
collapse, l'agrégation s'applique à l'ensemble des résultats avant le regroupement.Après utilisation de la fonctionnalité
collapse, le nombre total de groupes renvoyés est limité par les paramètresoffsetetlimit. Le nombre maximal de groupes renvoyés est de 100 000.Le nombre total de lignes renvoyé correspond au nombre de lignes correspondantes avant l'opération de regroupement (
collapse). Il est impossible de récupérer le nombre total de groupes après le regroupement.
Paramètres
|
Paramètre |
Description |
|
query |
Type de requête. Définissez ce paramètre sur n'importe quel type de requête. |
|
collapse |
Regroupe l'ensemble des résultats selon le champ spécifié par le paramètre fieldName. fieldName : nom du champ servant de base au regroupement des résultats. Seuls les champs de type INTEGER, FLOATING-POINT ou KEYWORD sont pris en charge. Les champs de type ARRAY ne sont pas pris en charge. |
|
offset |
Position de départ de la requête actuelle. |
|
limit |
Nombre maximal de lignes que la requête actuelle doit renvoyer. Pour obtenir uniquement le nombre de lignes correspondant aux conditions de requête sans récupérer leurs données, définissez le paramètre limit sur 0. |
|
getTotalCount |
Indique si le nombre total de lignes correspondant aux conditions de requête doit être renvoyé. La valeur par défaut est false, ce qui signifie que 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. |
|
tableName |
Nom de la table de données. |
|
indexName |
Nom de l'index de recherche. |
|
columnsToGet |
Indique si toutes les colonnes de chaque ligne correspondant aux conditions de requête doivent être renvoyées.
|
Exemples
L'exemple de code suivant montre comment utiliser une requête MatchAllQuery pour interroger le nombre total de lignes d'une table et regrouper l'ensemble des résultats selon la valeur de la colonne col_keyword :
let searchQuery = {
offset: 0,
limit: 100,
query: {
queryType: TableStore.QueryType.MATCH_ALL_QUERY,
},
collapse: {
fieldName: "col_keyword",
},
getTotalCount: false,
};
let params = {
tableName: tableName,
indexName: indexName,
searchQuery: searchQuery,
columnToGet: { // Specify the columns that you want to return. You can set the parameter to RETURN_SPECIFIED to return the specified columns, RETURN_ALL to return all columns, RETURN_ALL_FROM_INDEX to return all columns in the search index, or RETURN_NONE to return only the primary key columns.
returnType: TableStore.ColumnReturnType.RETURN_ALL_FROM_INDEX
},
timeoutMs: 30000,
}
client.search(params, function (err, data) {
if (err) {
console.log('search error:', err.toString());
} else {
console.log('search success:', data);
}
});
FAQ
Références
-
Les index de recherche prennent en charge les types de requêtes suivants : requête TermQuery, requête TermsQuery, requête MatchAllQuery, requête MatchQuery, requête MatchPhraseQuery, requête PrefixQuery, requête RangeQuery, requête WildcardQuery, requête BoolQuery, requête GeoQuery, requête NestedQuery, requête VectorQuery et requête ExistsQuery. Sélectionnez un type de requête adapté à vos besoins métier.
Pour trier ou paginer les lignes correspondant aux conditions de requête, utilisez la fonctionnalité de tri et de pagination. Pour plus d'informations, consultez la rubrique Tri et pagination.
Pour regrouper l'ensemble des résultats selon une colonne spécifique, utilisez la fonctionnalité de regroupement (distinct). Les données du type spécifié n'apparaissent alors qu'une seule fois dans les résultats de la requête. Pour plus d'informations, consultez la rubrique Regroupement (distinct).
Pour analyser les données d'une table de données (par exemple, obtenir les valeurs extrêmes, la somme et le nombre total de lignes), effectuez des opérations d'agrégation ou exécutez des instructions SQL. Pour plus d'informations, consultez les rubriques Agrégation et Requête SQL.
Pour obtenir rapidement toutes les lignes correspondant aux conditions de requête sans tri, appelez les opérations ParallelScan et ComputeSplits afin d'utiliser la fonctionnalité d'analyse parallèle. Pour plus d'informations, consultez la rubrique Analyse parallèle.