Tous les produits
Search
Centre de documentation

Tablestore:Collapse (suppression des doublons)

Dernière mise à jour :Aug 28, 2026

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

La fonctionnalité collapse permet d'effectuer une déduplication (Distinct) dans la plupart des scénarios, ce qui équivaut à dédupliquer selon la colonne de collapse. Toutefois, elle s'applique uniquement aux colonnes de type entier, nombre à virgule flottante et Keyword. Elle ne prend pas en charge les colonnes de type array et ne peut renvoyer que les 100 000 premiers résultats triés.

Limites d'utilisation

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

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

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

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

  • Limite du nombre de groupes — Après l'opération de collapse, le nombre total de groupes renvoyés dépend de la valeur maximale de offset plus 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 correspondantes avant l'opération de collapse. Il n'est pas possible d'obtenir le nombre total de groupes après l'opération de collapse.

Paramètres

La fonctionnalité collapse est fournie par l'opération Search et est implémentée à l'aide du paramètre collapse. Le tableau suivant décrit les paramètres utilisés dans une requête de collapse.

Paramètre Description
query Tout type de requête.
collapse Les paramètres de collapse, qui incluent le paramètre fieldName. fieldName : nom de la colonne selon laquelle l'ensemble de résultats est réduit (collapsed). Ce paramètre s'applique uniquement aux colonnes de type entier, nombre à virgule flottante et Keyword. Les colonnes de type array ne sont pas prises en charge.
offset La position à partir de laquelle la requête actuelle commence.
limit Le nombre maximal de lignes à renvoyer pour la requête actuelle. Si vous souhaitez obtenir uniquement le nombre de lignes sans les données, définissez limit sur 0. Aucune ligne n'est renvoyée.
getTotalCount Indique s'il faut renvoyer le nombre total de lignes correspondantes. La valeur par défaut est false, ce qui signifie que le nombre total de lignes correspondantes n'est pas renvoyé. Le renvoi du nombre total de lignes correspondantes affecte les performances de la requête.
tableName Le nom de la table de données.
indexName Le nom de l'index de recherche.
columnsToGet Indique s'il faut renvoyer toutes les colonnes. Ce paramètre inclut les paramètres returnAll et columns. La valeur par défaut de returnAll est false, ce qui signifie que toutes les colonnes ne sont pas renvoyées. Dans ce cas, vous pouvez utiliser columns pour spécifier les colonnes à renvoyer. Si vous n'utilisez pas columns pour spécifier les colonnes à renvoyer, seules les colonnes de clé primaire sont renvoyées. Si vous définissez returnAll sur true, toutes les colonnes sont renvoyées.

Utilisation

Utilisez l'interface de ligne de commande ou un SDK pour réduire les résultats lors de l'interrogation des données.

Utiliser l'interface de ligne de commande

Exécutez la commande search dans l'interface de ligne de commande pour interroger les données à l'aide d'un index de recherche, et configurez le paramètre Collapse dans les conditions de requête pour utiliser la fonctionnalité collapse. Pour plus d'informations, consultez la rubrique Index de recherche.

  • Exécutez la commande search pour interroger les données de la table à l'aide d'un index de recherche et renvoyer toutes les colonnes indexées.

search -n search_index --return_all_indexed
  • Saisissez les conditions de requête comme indiqué. L'exemple de code suivant illustre cette étape :

{
    "Offset": -1,
    "Limit": 10,
    "Collapse": {
        "FieldName": "product_name"
    },
    "Sort": null,
    "GetTotalCount": true,
    "Token": null,
    "Query": {
        "Name": "MatchQuery",
        "Query": {
            "FieldName": "user_id",
            "Text": "00002",
            "MinimumShouldMatch": 1
        }
    }
}

Le tableau suivant décrit les champs clés de l'exemple :

Champ Description
Offset La position à partir de laquelle la requête commence. Une valeur de -1 indique qu'aucun décalage n'est appliqué.
Limit Le nombre maximal de lignes à renvoyer.
Collapse.FieldName Le nom de la colonne selon laquelle les résultats sont dédupliqués. Dans cet exemple, product_name est utilisé comme colonne de collapse. Remplacez cette valeur par le nom de votre colonne cible.
Query Les conditions de requête. Cet exemple utilise une MatchQuery sur la colonne user_id. Remplacez le nom du champ et le texte de la requête par vos propres valeurs.

Une fois que la requête a renvoyé des résultats, vérifiez que la fonctionnalité collapse fonctionne comme prévu en vous assurant que les valeurs de la colonne de collapse sont uniques parmi les lignes renvoyées.

Utiliser un SDK

Utilisez le SDK Java, le SDK Go, le SDK Python, le SDK Node.js, le SDK .NET ou le SDK PHP pour réduire les résultats lors de l'interrogation des données. L'exemple suivant utilise le SDK Java pour expliquer comment utiliser la fonctionnalité collapse.

L'exemple suivant interroge toutes les lignes, réduit les résultats selon le champ category et trie les lignes selon le champ price par ordre décroissant. La ligne ayant le prix le plus élevé dans chaque catégorie est renvoyée.

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(new MatchAllQuery());
searchQuery.setLimit(10);
searchQuery.setCollapse(new Collapse("category"));
searchQuery.setSort(new Sort(
        Arrays.asList(new FieldSort("price", SortOrder.DESC))));

SearchRequest.ColumnsToGet columnsToGet =
        new SearchRequest.ColumnsToGet();
columnsToGet.setColumns(Arrays.asList("category", "price"));

SearchRequest request =
        new SearchRequest("example_table", "example_index", searchQuery);
request.setColumnsToGet(columnsToGet);

SearchResponse response = client.search(request);
System.out.println(response.getRows());

Interrogation des données

En mode VCU (anciennement mode Reserved), l'interrogation des données à l'aide d'un index de recherche consomme les ressources de calcul des VCU. En mode CU (anciennement mode Pay-As-You-Go), l'interrogation des données à l'aide d'un index de recherche consomme du débit de lecture. Pour plus d'informations, consultez la rubrique Facturation des index de recherche.

L'interrogation des données à l'aide d'un index de recherche consomme du débit de lecture. Pour plus d'informations, consultez la rubrique Éléments facturables des index de recherche.

L'utilisation de la fonctionnalité collapse lors de l'interrogation des données n'affecte pas les règles de facturation existantes.

FAQ

Références