Tous les produits
Search
Centre de documentation

Tablestore:Requête Exists

Dernière mise à jour :Aug 18, 2026

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

Remarque
  • 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 au sein 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 d'une ligne de 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" = "[]") dans la table de données, l'index de recherche considère que la colonne city n'existe pas.

Opérations API

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

Paramètres

Paramètre

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 dégradées.

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

Méthodes

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 :

Utiliser la console Tablestore

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

    1. Connectez-vous à la console Table Store.

    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 répondant à toutes les conditions spécifiées. Si vous sélectionnez Or, la requête renvoie les données répondant à au moins une des conditions spécifiées. Si vous sélectionnez Not, la requête renvoie les données ne répondant 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 Requête Exists (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.

Utiliser l'interface CLI Tablestore

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 Index de recherche.

  1. Exécutez la commande search pour utiliser l'index de recherche search_index afin d'interroger des 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"
            }
        }
    }

Utiliser les SDK Tablestore

Vous pouvez utiliser les SDK Tablestore suivants pour effectuer une requête Exists : SDK Tablestore pour Java, SDK Tablestore pour Go, SDK Tablestore pour Python, SDK Tablestore pour Node.js, SDK Tablestore pour .NET et SDK Tablestore pour PHP. Cet exemple utilise le SDK Tablestore pour Java.

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());

Facturation

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 Mesure et facturation de l'index de recherche.

FAQ

Références