Tous les produits
Search
Centre de documentation

Tablestore:Requête Exists

Dernière mise à jour :Sep 21, 2026

La requête Exists, également appelée requête NULL ou requête de valeur NULL, permet de déterminer si une colonne d'une ligne existe dans des données éparses. Par exemple, vous pouvez interroger les lignes dont la valeur de la colonne address n'est pas vide.

Remarque
  • Pour effectuer 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.

    • 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.

API operations

Appelez l'opération Search ou ParallelScan et définissez le type de requête sur ExistsQuery pour exécuter une requête Exists.

Parameters

Parameter

Description

fieldName

Nom de la colonne à interroger.

query

Type de requête. Définissez ce paramètre sur ExistsQuery.

getTotalCount

Indique s'il faut renvoyer le nombre total de lignes correspondant aux conditions de requête. La valeur par défaut est false, ce qui signifie que le nombre total de lignes n'est pas renvoyé.

Si vous définissez ce paramètre sur true, les performances de la requête sont réduites.

tableName

Nom de la table de données.

indexName

Nom de l'index de recherche.

columnsToGet

Indique s'il faut renvoyer toutes les colonnes de chaque ligne correspondant aux conditions de requête. Vous pouvez configurer les champs returnAll et columns pour ce paramètre.

La valeur par défaut du champ returnAll est false, ce qui signifie que toutes les colonnes ne sont pas renvoyées. Dans ce cas, utilisez le champ columns pour spécifier les colonnes à renvoyer. Si vous ne spécifiez aucune colonne, seules les colonnes de clé primaire sont renvoyées.

Si vous définissez le champ returnAll sur true, toutes les colonnes sont renvoyées.

Methods

Exécutez une requête Exists via la console Tablestore, l'interface CLI Tablestore ou les SDK Tablestore. Avant de commencer, assurez-vous d'avoir effectué les préparatifs suivants :

Use the Tablestore console

  1. Accédez à l'onglet Index Management.

    1. Connectez-vous à la Table Store console.

    2. Dans la barre de navigation supérieure, sélectionnez un groupe de ressources et une région.

    3. Sur la page Overview, cliquez sur le nom de l'instance ou sur Instance Management dans la colonne Actions.

    4. Sous l'onglet Instance Details, dans l'onglet Data Table List, cliquez sur le nom de la table de données ou sur Index Management dans la colonne Actions.

  2. Sous l'onglet Index Management, localisez l'index de recherche cible et cliquez sur Search dans la colonne Actions.

  3. Dans la boîte de dialogue Search, configurez la requête.

    1. Par défaut, toutes les colonnes sont renvoyées. Pour renvoyer des colonnes spécifiques, désactivez l'option Retrieve All Columns et saisissez les noms des colonnes, séparés par des virgules.

      Remarque

      Par défaut, Table Store renvoie les colonnes de clé primaire de la table de données.

    2. Sélectionnez un opérateur logique : And, Or ou Not.

      Si vous sélectionnez And, la requête renvoie les données satisfaisant toutes les conditions spécifiées. Si vous sélectionnez Or, la requête renvoie les données satisfaisant au moins l'une des conditions spécifiées. Si vous sélectionnez Not, la requête renvoie les données ne satisfaisant pas aux conditions spécifiées.

    3. Sélectionnez un champ d'index et cliquez sur Add.

    4. Définissez le type de requête pour le champ d'index sur Exists query (ExistsQuery).

    5. Par défaut, le tri est désactivé. Pour trier les résultats selon un champ spécifique, activez l'option Enable Sorting, ajoutez le champ de tri et configurez l'ordre de tri.

    6. Par défaut, l'agrégation est désactivée. Pour effectuer une agrégation statistique sur un champ spécifique, activez l'option Enable Aggregation, ajoutez le champ d'agrégation et configurez les paramètres d'agrégation.

  4. Cliquez sur OK.

    Les résultats de la requête s'affichent sous l'onglet Index Management.

Use the Tablestore CLI

Utilisez l'interface CLI Tablestore pour exécuter la commande search afin d'interroger des données à l'aide d'index de recherche. Pour plus d'informations, consultez la rubrique Search index.

  1. Exécutez la commande search pour utiliser l'index de recherche search_index afin d'interroger les données et de renvoyer toutes les colonnes indexées de chaque ligne correspondant aux conditions de requête.

    search -n search_index --return_all_indexed
  2. Saisissez les conditions de requête comme indiqué :

    {
        "Offset": -1,
        "Limit": 10,
        "Collapse": null,
        "Sort": null,
        "GetTotalCount": true,
        "Token": null,
        "Query": {
            "Name": "ExistsQuery",
            "Query": {
                "FieldName": "col_keyword"
            }
        }
    }

Use Tablestore SDKs

Utilisez les SDK Tablestore suivants pour exécuter une requête Exists : Tablestore SDK for Java, Tablestore SDK for Go, Tablestore SDK for Python, Tablestore SDK for Node.js, Tablestore SDK for .NET et Tablestore SDK for PHP. Cet exemple utilise le SDK Tablestore pour Java.

L'exemple suivant interroge les lignes où le champ city existe. La requête renvoie jusqu'à 10 lignes ainsi que le nombre total de correspondances.

String tableName = "example_table";
String indexName = "example_index";

ExistsQuery existsQuery = new ExistsQuery();
existsQuery.setFieldName("city");

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(existsQuery);
searchQuery.setLimit(10);
searchQuery.setTrackTotalCount(SearchQuery.TRACK_TOTAL_COUNT);

SearchRequest request = new SearchRequest(tableName, indexName, searchQuery);
SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
columnsToGet.setReturnAll(true);
request.setColumnsToGet(columnsToGet);

SearchResponse response = client.search(request);
System.out.println(response.getTotalCount());
System.out.println(response.getRows());

Billing

L'interrogation de 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

References