Tous les produits
Search
Centre de documentation

Tablestore:Requête imbriquée

Dernière mise à jour :Aug 18, 2026

Exécutez une requête imbriquée pour interroger les données des lignes enfants dans les champs imbriqués. Les champs imbriqués ne sont pas interrogables directement. Pour ce faire, spécifiez le chemin du champ imbriqué et une sous-requête dans un objet NestedQuery. La sous-requête peut être de n'importe quel type.

Prérequis

Paramètres

Paramètre

Description

table_name

Nom de la table de données.

index_name

Nom de l'index de recherche.

path

Chemin du champ imbriqué. Les champs imbriqués utilisent une structure arborescente. Par exemple, news.title désigne le sous-champ title du champ imbriqué news.

query

Requête appliquée au sous-champ du champ imbriqué. Elle peut être de n'importe quel type.

score_mode

Valeur utilisée pour calculer le score lorsqu'un champ contient plusieurs valeurs.

Exemples

L'exemple de code suivant montre comment interroger les lignes dont la valeur de la colonne nested.nested_keyword est 'sub' :

$request = array(
    'table_name' => 'php_sdk_test',
    'index_name' => 'php_sdk_test_search_index',
    'search_query' => array(
        'offset' => 0,
        'limit' => 2,
        'get_total_count' => true,
        'query' => array(
            'query_type' => QueryTypeConst::NESTED_QUERY,
            'score_mode' => ScoreModeConst::SCORE_MODE_AVG,
            'query' => array(
                'path' => "nested",
                'query' => array(
                    'query_type' => QueryTypeConst::TERM_QUERY,
                    'query' => array(
                        'field_name' => 'nested.nested_keyword',
                        'term' => 'sub'
                    )
                )
            )
        ),
        'sort' => array(
            array(
                'field_sort' => array(
                    'field_name' => 'nested.nested_long',
                    'order' => SortOrderConst::SORT_ORDER_DESC,
                    'nested_filter' => array(
                        'path' => "nested",
                        'query' => array(
                            'query_type' => QueryTypeConst::TERM_QUERY,
                            'query' => array(
                                'field_name' => 'nested.nested_keyword',
                                'term' => 'sub'
                            )
                        )
                    )
                )
            ),
        )
    ),
    'columns_to_get' => array(
        'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED,
        'return_names' => array('nested')
    )
);
$response = $otsClient->search($request);

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 term, requête terms, requête match all, requête match, requête match phrase, requête prefix, requête range, requête wildcard, requête Boolean, requête geo, requête imbriquée et requête exists. Combinez différentes méthodes de requête pour interroger les données selon plusieurs dimensions, en fonction de 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 en fonction d'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, par exemple pour obtenir les valeurs extrêmes, la somme ou 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 récupérer rapidement toutes les lignes satisfaisant les conditions de requête sans avoir besoin de les trier, 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.