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 valeur de la colonne d'adresse 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. Prenons l'exemple de la colonne city.
Si le type de la colonne city dans l'index de recherche est un type de base (tel que keyword) et que cette colonne est absente pour une ligne dans la table de données, l'index de recherche considère que la colonne city n'existe pas.
Si le type de la colonne city dans l'index de recherche est un type de base (tel que keyword) et que la valeur de cette colonne est un tableau vide ("city" = "[]") pour une ligne dans la table de données, l'index de recherche considère que la colonne city 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 des index de recherche.
Paramètres
|
Paramètre |
Description |
|
TableName |
Nom de la table de données. |
|
IndexName |
Nom de l'index de recherche. |
|
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 : |
|
FieldName |
Nom du champ à interroger. |
|
ColumnsToGet |
Indique s'il faut renvoyer toutes les colonnes de chaque ligne correspondante. Valeurs prises en charge : Par défaut,
Définissez |
Exemples
L'exemple suivant permet de rechercher les lignes dont la colonne pk0 n'est pas vide.
/// <summary>
/// Perform an exists query to query the rows in which the value of the pk0 column is not empty.
/// </summary>
/// <param name="otsClient"></param>
public static void ExistsQuery(OTSClient otsClient)
{
ExistsQuery existsQuery = new ExistsQuery
{
FieldName = "pk0"
};
SearchQuery searchQuery = new SearchQuery
{
Query = existsQuery,
GetTotalCount = false
};
SearchRequest searchRequest = new SearchRequest(TableName, IndexName, searchQuery);
SearchResponse searchResponse = otsClient.Search(searchRequest);
Console.WriteLine(JsonConvert.SerializeObject(searchResponse));
}
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 booléenne, requête geo, requête imbriquée et requête exists. Vous pouvez utiliser différentes méthodes de requête pour interroger les données selon plusieurs dimensions, en fonction de vos besoins métier.
Vous pouvez trier ou paginer les lignes répondant aux conditions de requête grâce aux fonctionnalités de tri et de pagination. Pour plus d'informations, consultez la rubrique 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 rubrique Regroupement (distinct).
Pour analyser les données d'une table de données, 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 minimales et maximales, la somme ainsi que le nombre total de lignes. Pour plus d'informations, consultez les rubriques Agrégation et Requête SQL.
Si vous souhaitez obtenir toutes les lignes répondant aux conditions de requête sans avoir besoin de les trier, appelez les opérations ParallelScan et ComputeSplits pour utiliser la fonctionnalité d'analyse parallèle. Pour plus d'informations, consultez la rubrique Analyse parallèle.