Une requête imbriquée permet d'interroger les données contenues dans les lignes enfants des champs imbriqués. Ces derniers ne peuvent pas être interrogés directement. Pour interroger un champ imbriqué, spécifiez son chemin ainsi qu'une sous-requête au sein d'un objet NestedQuery. Cette sous-requête peut être de n'importe quel type.
Seuls les champs imbriqués peuvent faire l'objet de requêtes imbriquées.
Il est possible d'interroger simultanément des champs imbriqués et d'autres types de champs dans une même requête. Pour plus d'informations sur le type de champ imbriqué, reportez-vous à Type de données imbriquées.
Opération API
Pour exécuter une requête imbriquée, appelez l'opération Search ou ParallelScan et définissez le type de requête sur NestedQuery.
Paramètres
|
Paramètre |
Description |
|
path |
Chemin du champ imbriqué, structuré de manière arborescente. Par exemple, news.title désigne le sous-champ title du champ imbriqué nommé news. |
|
query |
Requête à exécuter sur le sous-champ du champ imbriqué. Elle peut être de n'importe quel type. |
|
scoreMode |
Valeur utilisée pour calculer le score lorsqu'un champ contient plusieurs valeurs. |
|
getTotalCount |
Indique s'il faut renvoyer le nombre total de lignes correspondant aux conditions de la requête. La valeur par défaut est false, ce qui signifie que ce total n'est pas renvoyé. Si vous définissez ce paramètre sur true, les performances de la requête se dégradent. |
|
weight |
Pondération attribuée au champ interrogé pour calculer le score de pertinence des mots-clés basé sur BM25. Ce paramètre s'utilise dans les scénarios de recherche en texte intégral. Plus la pondération est élevée, plus le score de pertinence BM25 du champ augmente. Il s'agit d'un nombre décimal positif. Ce paramètre n'a aucune incidence sur le nombre de lignes renvoyées. En revanche, il influence les scores de pertinence BM25 des résultats de la requête. |
|
tableName |
Nom de la table de données. |
|
indexName |
Nom de l'index de recherche. |
|
columnsToGet |
Détermine si toutes les colonnes de chaque ligne correspondant aux conditions de la requête doivent être renvoyées. Vous pouvez configurer les paramètres returnAll et columns pour ce paramètre. La valeur par défaut du paramètre returnAll est false, ce qui signifie que toutes les colonnes ne sont pas renvoyées. Dans ce cas, utilisez le paramètre columns pour spécifier celles à renvoyer. Si vous ne précisez rien, seules les colonnes de clé primaire sont renvoyées. Si vous définissez le paramètre returnAll sur true, toutes les colonnes sont renvoyées. |
|
InnerHits |
Paramètres des sous-champs du champ imbriqué.
|
Méthodes
Vous pouvez exécuter une requête imbriquée via la console Tablestore ou les SDK Tablestore. Avant toute opération, assurez-vous d'avoir effectué les préparatifs suivants :
-
Créez un compte Alibaba Cloud ou un utilisateur RAM disposant des permissions nécessaires sur Tablestore. Pour savoir comment accorder ces permissions à un utilisateur RAM, reportez-vous à Utiliser une politique RAM pour accorder des permissions à un utilisateur RAM.
Si vous prévoyez d'utiliser les SDK Tablestore pour exécuter une requête imbriquée, créez une paire AccessKey pour votre compte Alibaba Cloud ou votre utilisateur RAM. Pour plus d'informations, reportez-vous à Créer une paire AccessKey.
AvertissementLa paire AccessKey d'un compte Alibaba Cloud donne accès à toutes les opérations API. Nous vous recommandons d'utiliser un utilisateur RAM pour appeler les opérations API ou effectuer les tâches d'exploitation et de maintenance courantes. Évitez également d'inscrire en dur l'ID AccessKey et le secret AccessKey dans le code de votre projet. Une telle pratique risque d'entraîner une fuite de vos identifiants et de compromettre la sécurité de l'ensemble des ressources de votre compte.
Créez une table de données. Pour plus d'informations, reportez-vous à Opérations sur une table de données.
Créez un index de recherche pour cette table de données. Pour plus d'informations, reportez-vous à Créer un index de recherche.
Lorsque vous passez par les SDK Tablestore pour exécuter une requête imbriquée, initialisez au préalable une instance OTSClient. Pour plus d'informations, reportez-vous à Initialiser une instance OTSClient.
Facturation
L'interrogation de données via un Search Index consomme du débit en lecture. Pour plus d'informations, reportez-vous à Mesure et facturation de Search Index.
FAQ
Références
Search Index prend en charge divers types de requêtes pour explorer les données de manière multidimensionnelle, notamment la requête par terme, la requête par termes multiples, la requête de correspondance totale, la requête de correspondance, la requête de correspondance d'expression, la requête par plage, la requête par préfixe, la requête par suffixe, la requête avec caractères génériques, la requête avec caractères génériques basée sur les jetons, la requête booléenne, la requête géographique, la requête imbriquée, la recherche vectorielle ainsi que la requête d'existence.
Lors de l'interrogation des données, vous pouvez trier et paginer le jeu de résultats, ou encore appliquer une réduction (déduplication).
Pour analyser vos données (recherche d'une valeur maximale ou minimale, calcul d'une somme, comptage de lignes), exploitez les fonctionnalités d'agrégation statistique ou de requête SQL.
Si vous souhaitez exporter rapidement des données sans vous soucier de l'ordre du jeu de résultats, utilisez la fonctionnalité Parallel Scan.