Exécutez une requête imbriquée pour interroger les données contenues dans les lignes enfants des champs imbriqués. Il est impossible d'interroger directement les champs imbriqués. Pour ce faire, spécifiez le chemin du champ imbriqué ainsi qu'une sous-requête au sein d'un objet NestedQuery. La sous-requête peut être de n'importe quel type.
Seuls les champs imbriqués peuvent faire l'objet de requêtes imbriquées.
Vous pouvez interroger des champs imbriqués et d'autres types de champs dans une seule demande. Pour plus d'informations sur le type de champ imbriqué, consultez la rubrique Nested data type.
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é. Ce chemin s'apparente à une structure 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é. Cette requête peut être de n'importe quel type. |
scoreMode | Valeur utilisée pour calculer le score lorsqu'un champ contient plusieurs valeurs. |
getTotalCount | Indique si le nombre total de lignes correspondant aux conditions de requête doit être renvoyé. La valeur par défaut de ce paramètre est false, ce qui signifie que le nombre total de lignes correspondantes n'est pas renvoyé. Si vous définissez ce paramètre sur true, les performances de la requête sont dégradées. |
weight | Pondération à attribuer au champ interrogé afin de calculer le score de pertinence des mots-clés basé sur BM25. Ce paramètre est utilisé dans les scénarios de recherche en texte intégral. Plus la pondération est élevée, plus le score de pertinence des mots-clés basé sur BM25 pour le champ est important. La valeur de ce paramètre est un nombre à virgule flottante positif. Ce paramètre n'affecte pas le nombre de lignes renvoyées. En revanche, il influence les scores de pertinence des mots-clés basés sur BM25 des résultats de la requête. |
tableName | Nom de la table de données. |
indexName | Nom de l'index de recherche. |
columnsToGet | Indique si toutes les colonnes de chaque ligne correspondant aux conditions de 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 les colonnes à renvoyer. Si vous ne spécifiez pas les colonnes à renvoyer, seules les colonnes de clé primaire sont retourné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
Utilisez la console Tablestore ou les SDK Tablestore pour exécuter une requête imbriquée. Avant de commencer, assurez-vous d'avoir effectué les préparatifs suivants :
-
Un compte Alibaba Cloud ou un utilisateur RAM disposant des autorisations nécessaires pour effectuer des opérations sur Tablestore a été créé. Pour savoir comment accorder ces autorisations à un utilisateur RAM, consultez la rubrique Use a RAM policy to grant permissions to a RAM user.
Si vous souhaitez 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, consultez la rubrique Create an AccessKey pair.
AvertissementLa paire AccessKey d'un compte Alibaba Cloud dispose d'autorisations sur 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 d'intégrer en dur l'AccessKey ID et l'AccessKey Secret dans le code de votre projet, car cela pourrait entraîner la fuite de la paire AccessKey et compromettre la sécurité de toutes les ressources de votre compte.
Une table de données a été créée. Pour plus d'informations, consultez la rubrique Operations on a data table.
Un index de recherche a été créé pour la table de données. Pour plus d'informations, consultez la rubrique Create a search index.
Si vous souhaitez utiliser les SDK Tablestore pour exécuter une requête imbriquée, initialisez une instance OTSClient. Pour plus d'informations, consultez la rubrique Initialize an OTSClient instance.
Facturation
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 Search Index metering and billing.
FAQ
Références
L'index de recherche prend en charge divers types de requêtes pour l'interrogation multidimensionnelle des données, notamment la requête term, la requête terms, la requête match all, la requête match, la requête phrase match, la requête range, la requête prefix, la requête suffix, la requête wildcard, la requête token-based wildcard, la requête boolean, la requête geo, la requête nested, la recherche vectorielle, et la requête exists.
Lors de l'interrogation des données, vous pouvez trier et paginer l'ensemble de résultats ou effectuer un pliage (déduplication).
Pour l'analyse des données, telle que la recherche des valeurs maximales ou minimales, le calcul d'une somme ou le comptage des lignes, vous pouvez utiliser les fonctionnalités d'agrégation statistique ou de requête SQL.
Pour exporter rapidement les données indépendamment de l'ordre de l'ensemble de résultats, vous pouvez utiliser la fonctionnalité Parallel Scan.