Tous les produits
Search
Centre de documentation

Tablestore:Regroupement (distinct)

Dernière mise à jour :Oct 09, 2026

La fonctionnalité de regroupement déduplique un ensemble de résultats de requête selon une colonne spécifiée, de sorte que chaque valeur unique n'apparaisse qu'une seule fois dans les résultats renvoyés. Utilisez le regroupement pour maintenir la diversité des résultats lorsqu'une seule catégorie domine l'ensemble des résultats.

Prérequis

Limites d'utilisation

Avant d'utiliser la fonctionnalité de regroupement, tenez compte des contraintes suivantes :

  • Types de colonnes pris en charge — La fonctionnalité de regroupement s'applique uniquement aux colonnes de type entier, nombre à virgule flottante et Keyword. Les colonnes de type tableau ne sont pas prises en charge.

  • Pagination — La fonctionnalité de regroupement prend en charge la pagination uniquement via les paramètres offset et limit. La pagination basée sur un jeton n'est pas prise en charge.

  • Agrégation — Lorsque vous utilisez l'agrégation statistique conjointement avec la fonctionnalité de regroupement, l'agrégation s'applique uniquement à l'ensemble de résultats avant l'opération de regroupement.

  • Limite du nombre de groupes — Après l'opération de regroupement, le nombre total de groupes renvoyés dépend de la valeur maximale de la somme des paramètres offset et limit. Un maximum de 100 000 groupes peut être renvoyé.

  • Nombre total — Le nombre total de lignes dans la réponse correspond au nombre de lignes correspondant aux conditions de recherche avant l'opération de regroupement. Vous ne pouvez pas obtenir le nombre total de groupes après l'opération de regroupement.

Paramètres

Paramètre

Description

query

Type de requête. Vous pouvez définir ce paramètre sur n'importe quel type de requête.

collapse

Regroupe l'ensemble de résultats selon le champ spécifié par le paramètre fieldName.

fieldName : nom du champ sur lequel le regroupement de l'ensemble de résultats est effectué. Seuls les champs dont les valeurs sont de type INTEGER, FLOATING-POINT ou KEYWORD sont pris en charge. Les champs dont les valeurs sont de type ARRAY ne sont pas pris en charge.

offset

Position à partir de laquelle la requête actuelle commence.

limit

Nombre maximal de lignes que la requête actuelle doit renvoyer.

Pour interroger uniquement le nombre de lignes répondant aux conditions de requête sans récupérer les données spécifiques des lignes, définissez le paramètre limit sur 0.

getTotalCount

Indique si le nombre total de lignes répondant aux conditions de requête doit être renvoyé. La valeur par défaut de ce paramètre est false, ce qui signifie que le nombre total de lignes répondant aux conditions de requête n'est pas renvoyé.

Si vous définissez ce paramètre sur true, les performances de la requête sont dégradées.

tableName

Nom de la table de données.

indexName

Nom de l'index de recherche.

columnsToGet

Indique si toutes les colonnes de chaque ligne répondant aux conditions de requête doivent être renvoyées.

  • Si vous définissez returnType sur TableStore.ColumnReturnType.RETURN_SPECIFIED, vous devez configurer returnNames pour spécifier les colonnes à renvoyer.

  • Si vous définissez le paramètre returnType sur TableStore.ColumnReturnType.RETURN_ALL, toutes les colonnes sont renvoyées.

  • Si vous définissez le paramètre returnType sur TableStore.ColumnReturnType.RETURN_ALL_FROM_INDEX, toutes les colonnes de l'index de recherche sont renvoyées.

  • Si vous définissez le paramètre returnType sur TableStore.ColumnReturnType.RETURN_NONE, seules les colonnes de clé primaire sont renvoyées.

Exemples

L'exemple de code suivant montre comment utiliser une requête MatchAllQuery pour interroger le nombre total de lignes dans une table et regrouper l'ensemble de 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ête suivants : requête Term, requête Terms, requête MatchAll, requête Match, requête MatchPhrase, requête Prefix, requête Range, requête Wildcard, requête Bool, requête Geo, requête Nested, requête Vector et requête Exists. Sélectionnez un type de requête pour interroger les données selon vos besoins métier.

    Pour trier ou paginer les lignes répondant 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 de résultats selon une colonne spécifique, utilisez la fonctionnalité de regroupement (distinct). 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 la rubrique Regroupement (distinct).

  • Pour analyser les données d'une table de données, par exemple pour 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 répondant aux conditions de requête sans avoir besoin de les trier, appelez les opérations ParallelScan et ComputeSplits pour utiliser la fonctionnalité d'analyse parallèle. Pour plus d'informations, consultez la rubrique Analyse parallèle.