Tous les produits
Search
Centre de documentation

Tablestore:Collapse query results

Dernière mise à jour :Aug 18, 2026

Lorsque vous interrogez un index de recherche à l'aide du SDK Tablestore pour Java, vous pouvez réduire les résultats en fonction d'un champ spécifié afin de ne renvoyer qu'une seule ligne pour chaque valeur distincte de ce champ.

Prérequis

Installez le SDK Tablestore pour Java et initialisez un client.

Fonctionnement

La réduction de champ regroupe les lignes correspondantes selon la valeur d'un champ d'index de recherche spécifié et renvoie une ligne représentative pour chaque groupe. L'ordre de tri effectif détermine la ligne renvoyée pour chaque groupe. Utilisez les options de tri et pagination pour configurer l'ordre de tri. La réduction de champ modifie uniquement l'affichage des résultats de la requête et n'altère pas les données de la table.

Important
  • Le tri et l'agrégation doivent être activés pour le champ de réduction. Ce champ doit être un champ non tableau de type Keyword, Long ou Double.

  • Une requête de réduction prend uniquement en charge la pagination basée sur limit et offset. La pagination par jeton n'est pas prise en charge. La somme de limit et offset ne peut pas dépasser 100000.

  • Les agrégations et les regroupements (group-by) s'appliquent aux résultats correspondants avant la réduction. Le nombre total de lignes correspond également au nombre de lignes correspondantes avant la réduction. Il est impossible d'obtenir le nombre total de groupes après la réduction.

Appelez search pour interroger les données et configurez SearchQuery.collapse pour spécifier le champ de réduction.

SearchResponse search(SearchRequest request)

L'exemple suivant interroge toutes les lignes, réduit les résultats selon le champ category et trie les lignes par le champ price dans l'ordre décroissant. La ligne affichant 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());

Paramètres

Requête de recherche

Le type de request est SearchRequest. Le tableau suivant décrit ses paramètres.

Nom

Type

Description

tableName (obligatoire)

String

Nom de la table de données.

indexName (obligatoire)

String

Nom de l'index de recherche.

searchQuery (obligatoire)

SearchQuery

Condition de requête et configuration de la réduction.

columnsToGet (facultatif)

SearchRequest.ColumnsToGet

Colonnes à renvoyer. Si ce paramètre n'est pas configuré, seules les colonnes de clé primaire sont renvoyées.

timeoutInMillisecond (facultatif)

int

Délai d'expiration de la requête au niveau de la demande, en millisecondes. Valeur par défaut : -1, ce qui indique qu'aucun délai d'expiration spécifique n'est configuré.

routingValues (facultatif)

List<PrimaryKey>

Valeurs de clé primaire des champs de routage personnalisés. Vous n'avez pas besoin de configurer ce paramètre si le routage personnalisé n'est pas utilisé.

Configuration de la requête

Le type de request.searchQuery est SearchQuery. Le tableau suivant décrit ses paramètres.

Nom

Type

Description

query (obligatoire)

Query

Condition de requête. Les types de requête d'index de recherche sont pris en charge.

collapse (obligatoire)

Collapse

Configuration de la réduction.

offset (facultatif)

Integer

Position du groupe à partir de laquelle la requête actuelle commence. Valeur par défaut : 0. La somme de ce paramètre et de limit ne peut pas dépasser 100000.

limit (facultatif)

Integer

Nombre maximal de groupes à renvoyer. Valeur par défaut : 10. Si ce paramètre est défini sur 0, aucune ligne n'est renvoyée. La valeur maximale est 1000 si toutes les colonnes renvoyées sont lues depuis l'index de recherche, ou 100 si une colonne renvoyée doit être lue depuis la table de données.

highlight (facultatif)

Highlight

Configuration du résumé et de la mise en surbrillance. Le retour des résultats mis en surbrillance dépend du type de requête et de la configuration du champ d'index.

sort (facultatif)

Sort

Ordre de tri des résultats, qui détermine la ligne représentative renvoyée pour chaque groupe ainsi que l'ordre des groupes. Si ce paramètre n'est pas configuré, le tri de l'index est utilisé.

trackTotalCount (facultatif)

int

Nombre maximal attendu de lignes correspondantes à compter. Valeur par défaut : TRACK_TOTAL_COUNT_DISABLED, ce qui désactive le comptage. Définissez la valeur sur TRACK_TOTAL_COUNT pour compter toutes les lignes correspondantes avant la réduction. Une valeur plus faible offre de meilleures performances de requête.

filter (facultatif)

SearchFilter

Filtre appliqué aux résultats de query.

aggregationList (facultatif)

List<Aggregation>

Configurations d'agrégation. Les agrégations s'appliquent aux résultats correspondants avant la réduction.

groupByList (facultatif)

List<GroupBy>

Configurations de regroupement (group-by). Les regroupements s'appliquent aux résultats correspondants avant la réduction.

token (facultatif)

byte[]

Jeton de pagination. Ne configurez pas ce paramètre lors de l'utilisation de la réduction de champ.

Configuration de la réduction

Le type de request.searchQuery.collapse est Collapse. Le tableau suivant décrit son paramètre.

Nom

Type

Description

fieldName (obligatoire)

String

Nom du champ de réduction. Le tri et l'agrégation doivent être activés pour ce champ, qui doit être un champ non tableau de type Keyword, Long ou Double.

Colonnes à renvoyer

Le type de request.columnsToGet est SearchRequest.ColumnsToGet. Le tableau suivant décrit ses paramètres.

Nom

Type

Description

columns (facultatif)

List<String>

Noms des colonnes d'attribut à renvoyer. Configurez ce paramètre uniquement si returnAll et returnAllFromIndex sont tous deux définis sur false. Si ce paramètre n'est pas configuré, seules les colonnes de clé primaire sont renvoyées.

returnAll (facultatif)

boolean

Indique s'il faut renvoyer toutes les colonnes d'attribut de la table de données. Valeur par défaut : false.

returnAllFromIndex (facultatif)

boolean

Indique s'il faut renvoyer toutes les colonnes d'attribut stockées dans l'index de recherche. Valeur par défaut : false. Ne définissez pas ce paramètre et returnAll simultanément sur true.

Réponse

La méthode search renvoie SearchResponse. Le tableau suivant décrit les champs liés à la réduction de champ.

Nom

Type

Description

totalCount

long

Nombre de lignes correspondantes avant la réduction. Appelez getTotalCount() pour obtenir la valeur. Cette valeur dépend de trackTotalCount et n'indique pas le nombre de groupes après la réduction.

rows

List<Row>

Lignes après la réduction. Appelez getRows() pour obtenir la valeur. Au maximum une ligne est renvoyée pour chaque valeur distincte du champ de réduction.

searchHits

List<SearchHit>

Résultats de recherche (hits) après la réduction. Appelez getSearchHits() pour obtenir la valeur.

isAllSuccess

boolean

Indique si toutes les partitions d'index ont été interrogées. Appelez isAllSuccess() pour obtenir la valeur. Si ce champ est false, la réponse contient des résultats partiels.

aggregationResults

AggregationResults

Résultats d'agrégation calculés à partir des lignes correspondantes avant la réduction. Appelez getAggregationResults() pour obtenir la valeur. Ce champ est renvoyé uniquement si aggregationList est configuré.

groupByResults

GroupByResults

Résultats de regroupement (group-by) calculés à partir des lignes correspondantes avant la réduction. Appelez getGroupByResults() pour obtenir la valeur. Ce champ est renvoyé uniquement si groupByList est configuré.