La requête Exists, également appelée requête NULL ou requête de valeur NULL, permet de déterminer si une colonne existe pour une ligne donnée dans des données clairsemées. Par exemple, vous pouvez rechercher les lignes dont la colonne address n'est pas vide.
Pour exécuter une requête Exists sur une colonne Nested, utilisez une requête imbriquée (nested query).
Pour vérifier si une colonne contient des valeurs vides, combinez ExistsQuery avec mustNotQueries dans le cadre d'une BoolQuery.
-
Le système considère qu'une colonne n'existe pas si l'une des conditions suivantes est remplie. Dans cet exemple, nous prenons la colonne city comme référence.
Le type de la colonne city dans l'index de recherche est un type de base, tel que keyword. Si une ligne de la table de données ne contient pas la colonne city, l'index de recherche considère que cette colonne n'existe pas.
Le type de la colonne city dans l'index de recherche est un type de base, tel que keyword. Si la valeur de la colonne city est un tableau vide dans la table de données (« city » = « [] »), l'index de recherche considère que cette colonne n'existe pas.
Prérequis
Initialisez une instance OTSClient. Pour plus d'informations, consultez la rubrique Initialiser une instance OTSClient.
Créez une table de données et écrivez-y des données. Pour plus d'informations, consultez les rubriques Créer des tables de données et Écrire des données.
Créez un index de recherche pour la table de données. Pour plus d'informations, consultez la rubrique Créer un index de recherche.
Paramètres
|
Paramètre |
Description |
|
fieldName |
Nom du champ à interroger. |
|
query |
Type de requête. Définissez ce paramètre sur |
|
getTotalCount |
Indique s'il faut renvoyer le nombre total de lignes correspondant aux conditions de requête. Valeur par défaut : false. Définir cette option sur true réduit les performances de la requête. |
|
tableName |
Nom de la table de données. |
|
indexName |
Nom de l'index de recherche. |
|
columnsToGet |
Colonnes à renvoyer pour chaque ligne correspondante.
|
Exemples
L'exemple suivant interroge les lignes dont la colonne pic_des n'est pas vide.
client.search({
tableName: TABLE_NAME,
indexName: INDEX_NAME,
searchQuery: {
offset: 0,
limit: 10, // Set limit to 0 to return only the row count without data.
query: {
queryType: TableStore.QueryType.EXISTS_QUERY,
query: {
fieldName: "pic_des"
},
},
getTotalCount: true // Set to true to return the total number of matching rows. Default value: false.
},
columnToGet: { // RETURN_SPECIFIED: specified columns; RETURN_ALL: all columns; RETURN_ALL_FROM_INDEX: all columns in the search index; RETURN_NONE: primary key columns only.
returnType: TableStore.ColumnReturnType.RETURN_SPECIFIED,
returnNames: ["Col_1", "Col_2", "Col_3"]
}
}, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', JSON.stringify(data, null, 2));
});
FAQ
Références
-
Les index de recherche prennent en charge les types de requêtes suivants : 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 nested, requête vector et requête exists. Sélectionnez un type de requête adapté à vos besoins métier.
Pour trier ou paginer les lignes répondant 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 collapse (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 Collapse (distinct).
Pour analyser les données d'une table de données, 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 obtenir rapidement toutes les lignes répondant aux conditions de requête sans avoir besoin de les trier, appelez les opérations ParallelScan et ComputeSplits afin d'utiliser la fonctionnalité de balayage parallèle. Pour plus d'informations, consultez la rubrique Balayage parallèle.