Tous les produits
Search
Centre de documentation

Tablestore:Effectuer une requête imbriquée

Dernière mise à jour :Aug 18, 2026

Cette rubrique explique comment exécuter des requêtes imbriquées pour interroger les données des lignes enfants dans les colonnes de type imbriqué. Vous devez utiliser l'opération NestedQuery pour encapsuler une colonne imbriquée avant de l'interroger. Lors de l'appel à l'opération NestedQuery, spécifiez une sous-requête de n'importe quel type ainsi que le chemin d'accès de la colonne imbriquée.

Prérequis

Paramètres

Paramètre

Description

Path

Chemin d'accès de la colonne imbriquée. Ce chemin ressemble à une structure arborescente. Par exemple, news.title indique la sous-colonne title située dans la colonne news de type imbriqué.

Query

Requête appliquée à la sous-colonne de la colonne imbriquée. Cette requête peut être de n'importe quel type.

ScoreMode

Spécifie quelle valeur est utilisée pour calculer le score lorsque la colonne contient plusieurs valeurs.

TableName

Nom de la table de données.

IndexName

Nom de l'index de recherche.

ColumnsToGet

Indique s'il faut renvoyer toutes les colonnes des lignes correspondant aux conditions de requête. Vous pouvez spécifier les paramètres ReturnAll, Columns et ReturnAllFromIndex.

Par défaut, ReturnAll est défini sur false, ce qui signifie que seules les colonnes de clé primaire sont renvoyées. Pour renvoyer des colonnes supplémentaires, utilisez l'une des options suivantes :

  • Définissez Columns pour spécifier les colonnes à renvoyer.

  • Définissez ReturnAllFromIndex sur true pour renvoyer toutes les colonnes présentes dans l'index de recherche.

Définissez ReturnAll sur true pour renvoyer toutes les colonnes de la table de données.

Exemple

L'exemple de code suivant montre comment interroger les lignes dont la valeur de la sous-colonne nested_1, située dans la colonne col_nested, est « tablestore ». Toutes les colonnes de l'index de recherche sont renvoyées.

/// <summary>
/// Query the rows in which the value of the col1_nested.nested_1 column is "tablestore". In this example, the col1_nested column is a nested column and contains the nested_1 and nested_2 subcolumns. 
/// </summary>
/// <param name="otsClient"></param>
public static void NestedQuery(OTSClient otsClient)
{
    var searchQuery = new SearchQuery();
    // Return the total number of rows that meet the query conditions. 
    searchQuery.GetTotalCount = true;
    var nestedQuery = new NestedQuery();
    nestedQuery.Path = "col1_nested"; // Specify the path of the nested column. 
    TermQuery termQuery = new TermQuery("col1_nested.nested_1",new ColumnValue("tablestore"));// Construct a subquery of for the nested query. 
    nestedQuery.Query = termQuery;
    nestedQuery.ScoreMode = ScoreMode.None;

    var request = new SearchRequest(TableName, IndexName, searchQuery);
    // You can specify the ColumnsToGet parameter to return the columns that you specify, all columns in the rows that meet the query conditions, or all columns in the search index. If you do not specify this parameter, only the primary key columns are returned. 
    request.ColumnsToGet = new ColumnsToGet()
    {
        // Return all columns in the search index. 
        ReturnAllFromIndex = true
        // Return the columns that you specify. 
        //Columns = new List<string>() { Long_type_col, Text_type_col, Keyword_type_col }
        // Return all columns in the rows that meet the query conditions. 
        //ReturnAll = true
    };

    var response = otsClient.Search(request);

    Console.WriteLine("Total Count:" + response.TotalCount); // Display the total number of rows that meet the query conditions instead of the number of returned rows. 
}

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 par terme, requête par termes, requête MatchAll, requête Match, requête MatchPhrase, requête par préfixe, requête par plage, requête par caractère générique, requête booléenne, requête géographique, requête imbriquée et requête Exists. Vous pouvez combiner différentes méthodes de requête pour interroger vos données selon plusieurs dimensions, en fonction de vos besoins métier.

    Vous pouvez trier ou paginer les lignes correspondant aux conditions de requête grâce aux fonctionnalités de tri et de pagination. Pour plus d'informations, consultez la section Tri et pagination.

    La fonctionnalité de regroupement (distinct) permet de condenser l'ensemble des 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 la section Regroupement (distinct).

  • Si vous souhaitez analyser les données d'une table, vous pouvez utiliser la fonctionnalité d'agrégation de l'opération Search ou exécuter des instructions SQL. Par exemple, vous pouvez obtenir les valeurs minimale et maximale, la somme ainsi que le nombre total de lignes. Pour plus d'informations, consultez les sections Agrégation et Requête SQL.

  • Si vous souhaitez récupérer toutes les lignes correspondant aux conditions de requête sans avoir besoin de les trier, vous pouvez appeler les opérations ParallelScan et ComputeSplits pour utiliser la fonctionnalité de balayage parallèle. Pour plus d'informations, consultez la section Balayage parallèle.