Tous les produits
Search
Centre de documentation

Tablestore:Search indexes

Dernière mise à jour :Aug 19, 2026

Créez et gérez des index de recherche avec la CLI Tablestore pour interroger des données via des colonnes autres que la clé primaire et combiner plusieurs conditions.

Prérequis

  • La CLI Tablestore est installée et les identifiants d'accès sont configurés. Pour plus d'informations, consultez la rubrique CLI Tablestore.

  • Une table de données existe. Pour plus d'informations, consultez la rubrique Opérations sur les tables de données.

Créer un index de recherche

create_search_index -n <indexName>

Paramètre

Obligatoire

Description

-i, --input

Non

Chemin d'accès vers un fichier JSON définissant le schéma de l'index de recherche. Si ce paramètre n'est pas spécifié, la CLI utilise une saisie interactive.

-n, --name

Oui

Nom de l'index de recherche.

-t, --table

Non

Nom de la table de données. Ce paramètre n'est pas requis si une table de données est déjà sélectionnée à l'aide de la commande use.

--ttl

Non

Durée de conservation (TTL) des données, qui spécifie la période pendant laquelle les données sont conservées. Unité : secondes. Valeur par défaut : -1 (les données n'expirent jamais). Valeur minimale : 86400 (un jour). Les données dont la durée de conservation est dépassée sont automatiquement supprimées.

Important

Pour utiliser la fonctionnalité Gestion du cycle de vie de l'index de recherche, désactivez l'opération UpdateRow pour la table de données. La TTL de l'index de recherche et celle de la table de données sont indépendantes. La TTL de l'index de recherche doit être inférieure ou égale à celle de la table de données.

Lorsque vous y êtes invité, saisissez le schéma de l'index au format JSON, ou utilisez le paramètre -i pour spécifier un fichier de schéma. Le schéma contient les paramètres suivants :

Paramètre

Obligatoire

Description

IndexSetting

Non

Paramètres de l'index, incluant RoutingFields.

RoutingFields (facultatif) : Champs de routage personnalisés. Sélectionnez des colonnes de clé primaire comme champs de routage. Les données partageant les mêmes valeurs de champ de routage sont distribuées dans la même partition lors des opérations de lecture et d'écriture, ce qui améliore les performances des requêtes. En général, définissez un seul champ de routage. Si vous en définissez plusieurs, Tablestore concatène les valeurs en une seule.

FieldSchemas

Oui

Liste d'objets FieldSchema. Chaque objet FieldSchema contient les champs suivants :

  • FieldName (obligatoire) : Nom du champ pour l'index de recherche (nom de la colonne). Type : String. Un champ dans un index de recherche peut être une colonne de clé primaire ou une colonne d'attribut.

  • FieldType (obligatoire) : Types de données du champ.

  • IsArray (facultatif) : Indique si le champ est un tableau. Type : Boolean. Si la valeur est true, la colonne est un tableau et les données doivent être écrites au format de tableau JSON, par exemple ["a","b","c"]. Étant donné que Nested est un type de tableau, il n'est pas nécessaire de définir ce paramètre lorsque FieldType est Nested.

  • Index (facultatif) : Indique si l'indexation est activée. Type : Boolean. Valeur par défaut : true, ce qui construit un index inversé ou un index spatial pour la colonne. Si la valeur est false, aucun index n'est construit pour la colonne.

  • Analyzer (facultatif) : Type de Tokenisation. Définissez ce paramètre lorsque le type de champ est Text. S'il n'est pas défini, la tokenisation par caractère unique est utilisée par défaut.

  • AnalyzerParameter : Paramètres pour l'analyseur SingleWord, incluant CaseSensitive (indique si la correspondance est sensible à la casse ; par défaut : false) et DelimitWord (indique s'il faut séparer les mots alphabétiques et les chiffres ; par défaut : false).

  • EnableSortAndAgg (facultatif) : Indique si le tri et l'agrégation sont activés. Type : Boolean. Seuls les champs dont EnableSortAndAgg est défini sur true peuvent être utilisés pour le tri.

    Important

    Les champs Nested ne prennent pas en charge le tri et l'agrégation. Toutefois, les sous-colonnes au sein d'un champ Nested prennent en charge le tri et l'agrégation.

  • Store (facultatif) : Indique si la valeur du champ est stockée dans l'index de recherche. Type : Boolean. Lorsque cette option est activée, la valeur du champ peut être lue directement depuis l'index de recherche sans interroger la table de données, ce qui optimise les performances des requêtes.

  • IsVirtualField (facultatif) : Indique si la colonne est une Colonne virtuelle. Type : Boolean. Valeur par défaut : false. Si la valeur est true, SourceFieldNames est obligatoire.

  • SourceFieldNames (facultatif) : Nom du champ dans la table de données. Type : String. Obligatoire lorsque IsVirtualField est défini sur true.

IndexSort

Non

Paramètres de pré-tri de l'index. Par défaut : trié par clé primaire.

Important

Les index contenant des champs Nested ne prennent pas en charge IndexSort et ne peuvent pas être pré-triés.

Sorters (facultatif) : Méthode de pré-tri. Prend en charge le tri par clé primaire (PrimaryKeySort) et par valeur de champ (FieldSort). Pour plus d'informations, consultez la rubrique Tri et pagination.

  • Name : Méthode de tri. PrimaryKeySort trie par clé primaire. FieldSort trie par valeur de champ. Seuls les champs indexés avec le tri et l'agrégation activés peuvent être pré-triés.

  • Sorter : Contient FieldName (nom du champ pour le tri, obligatoire pour le tri par valeur de champ) et Order (ordre de tri : ASC pour ascendant ou DESC pour descendant ; par défaut : ASC).

Exemples

Créez un index de recherche nommé search_index.

create_search_index -n search_index

Saisissez le schéma de l'index lorsque vous y êtes invité. Exemple :

{
    "IndexSetting": {
        "RoutingFields": null
    },
    "FieldSchemas": [
        {
            "FieldName": "gid",
            "FieldType": "LONG",
            "Index": true,
            "EnableSortAndAgg": true,
            "Store": true,
            "IsArray": false,
            "IsVirtualField": false
        },
        {
            "FieldName": "col3",
            "FieldType": "TEXT",
            "Index": true,
            "Analyzer": "single_word",
            "AnalyzerParameter": {
                "CaseSensitive": true,
                "DelimitWord": null
            },
            "EnableSortAndAgg": false,
            "Store": true,
            "IsArray": false,
            "IsVirtualField": false
        }
    ],
    "IndexSort": {
        "Sorters": [
            {
                "Name": "PrimaryKeySort",
                "Sorter": {
                    "Order": "ASC"
                }
            }
        ]
    }
}

Créez un index de recherche à partir d'un fichier :

create_search_index -n search_index -i /tmp/indexschema.json

Répertorier les index de recherche

list_search_index

Paramètre

Obligatoire

Description

-a, --all

Non

Répertorie les index de recherche pour toutes les tables de données.

-d, --detail

Non

Affiche les informations détaillées sur les index de recherche.

-t, --table

Non

Nom de la table de données. Ce paramètre n'est pas requis si une table de données est déjà sélectionnée à l'aide de la commande use.

Exemples

Répertorie les index de recherche de la table de données actuelle avec les détails.

list_search_index -d

Consulter les détails d'un index de recherche

describe_search_index -n <indexName>

Paramètre

Obligatoire

Description

-n, --name

Oui

Nom de l'index de recherche.

-o, --output

Non

Enregistrez la sortie dans un fichier JSON ou TXT local.

-t, --table

Non

Nom de la table de données. Ce paramètre n'est pas requis si une table de données est déjà sélectionnée avec la commande use.

Exemples

Consultez les détails de l'index search_index.

describe_search_index -n search_index

Le champ Index schema de la sortie contient le schéma de l'index de recherche. Le paramètre TimeToLive indique la durée de vie (TTL) de l'index de recherche.

Interroger des données à l'aide d'un index de recherche

L'interface CLI Tablestore prend en charge les types de requête d'index de recherche 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 Wildcard basée sur des jetons, Requête Booléenne, Requête Geo et Requête Exists. Sélectionnez le type de requête adapté à votre cas d'utilisation.

search -n <indexName> --return_all_indexed

Lorsque vous y êtes invité, saisissez les conditions de requête au format JSON. Les conditions de requête contiennent les paramètres suivants :

Paramètre

Obligatoire

Description

Offset

Non

Position à partir de laquelle commencer à renvoyer les résultats.

Limit

Non

Nombre maximal de lignes à renvoyer. Pour obtenir uniquement le nombre de lignes sans renvoyer les données, définissez Limit sur 0.

Collapse

Non

Configuration du regroupement. Utilisez ce paramètre pour regrouper (supprimer les doublons) l'ensemble des résultats selon une colonne spécifique. FieldName spécifie le nom de la colonne. Seules les colonnes de type entier, flottant et Keyword sont prises en charge.

Sort

Non

Ordre de tri des résultats. Pour plus d'informations, consultez la section Définir au moment de la requête. Si ce paramètre n'est pas défini, les résultats sont renvoyés dans l'ordre de pré-tri. Si aucun ordre de pré-tri n'est défini, les résultats sont renvoyés dans l'ordre de la clé primaire.

GetTotalCount

Non

Indique s'il faut renvoyer le nombre total de lignes correspondantes. Valeur par défaut : false. L'activation de cette option peut augmenter la latence des requêtes.

Token

Non

Jeton de pagination permettant de lire les résultats restants. Lorsqu'une réponse ne contient pas toutes les lignes correspondantes, le serveur renvoie un Token. Transmettez ce Token dans la requête suivante pour poursuivre la lecture. Définissez Token sur null pour la première requête.

Query

Oui

Type de requête. Types pris en charge : MatchAllQuery, MatchQuery, MatchPhraseQuery, TermQuery, TermsQuery, PrefixQuery, RangeQuery, WildcardQuery, ExistsQuery, NestedQuery, KnnVectorQuery et BoolQuery.

Aggregations

Non

Configuration de l'agrégation. Prend en charge les opérations de valeur minimale, valeur maximale, somme, moyenne, comptage et comptage distinct.

  • Name : type d'agrégation, tel que min, max, sum, avg ou count.

  • Aggregation : configuration des paramètres d'agrégation, incluant AggName (nom personnalisé de l'agrégation), Field (champ à agréger) et MissingValue (valeur par défaut lorsque le champ est vide).

Exemples

Interrogez les données de la table actuelle avec search_index et renvoyez toutes les colonnes indexées.

search -n search_index --return_all_indexed

Saisissez les conditions de requête comme indiqué. L'exemple suivant interroge les lignes où uid est égal à 10001 et calcule la moyenne de la colonne pid :

{
    "Offset": -1,
    "Limit": 10,
    "Collapse": null,
    "Sort": null,
    "GetTotalCount": true,
    "Token": null,
    "Query": {
        "Name": "TermQuery",
        "Query": {
            "FieldName": "uid",
            "Term": 10001
        }
    },
    "Aggregations": [{
        "Name": "avg",
        "Aggregation": {
            "AggName": "agg1",
            "Field": "pid"
        }
    }]
}

Supprimer un index de recherche

drop_search_index -n <indexName> -y

Paramètre

Obligatoire

Description

-n, --name

Oui

Nom de l'index de recherche.

-t, --table

Non

Nom de la table de données. Ce paramètre n'est pas requis si une table de données est déjà sélectionnée avec la commande use.

-y, --yes

Oui

Confirmez la suppression. Ce paramètre est obligatoire dans la commande.

Exemples

Supprimez l'index search_index.

drop_search_index -n search_index -y