Tous les produits
Search
Centre de documentation

Tablestore:Create a search index

Dernière mise à jour :Aug 18, 2026

Utilisez le SDK Tablestore pour Python pour créer un index de recherche et configurer les champs d'index, le prétri, la durée de vie (TTL), les colonnes virtuelles et la mise en surbrillance.

Prérequis

  • Installez le SDK Tablestore pour Python et initialisez un client.

  • Une table dont le nombre maximal de versions est défini sur 1.

  • La durée de vie (TTL) de la table est définie sur -1 ou les mises à jour via UpdateRow sont désactivées pour cette table.

Description

Appelez create_search_index pour créer un index de recherche associé à une table. Une table peut comporter plusieurs index de recherche. Spécifiez le nom de la table, le nom de l'index et sa configuration complète dans la requête, puis ajoutez les colonnes à interroger dans fields. Les types des champs de l'index doivent correspondre aux types de données des colonnes de la table associée. Pour consulter les types pris en charge, reportez-vous à la rubrique Types de données.

create_search_index(table_name, index_name, index_meta)
Remarque

La création d'un index de recherche est asynchrone. Après la réussite de la requête, attendez la fin de la synchronisation des données de l'index avant de l'interroger.

L'exemple suivant crée l'index example_index sur la table example_table avec des champs de type Keyword et Long. Sans configuration explicite du prétri et de la TTL, l'index est trié par clé primaire et ses données n'expirent pas.

table_name = "example_table"
index_name = "example_index"

fields = [
    FieldSchema("category", FieldType.KEYWORD, index=True),
    FieldSchema("price", FieldType.LONG, index=True),
]
index_meta = SearchIndexMeta(fields)

client.create_search_index(table_name, index_name, index_meta)

Paramètres

La méthode create_search_index accepte les paramètres suivants.

Nom

Type

Description

table_name (obligatoire)

str

Nom de la table.

index_name (obligatoire)

str

Nom de l'index de recherche.

index_meta (obligatoire)

SearchIndexMeta

Configuration de l'index de recherche.

Configuration de l'index

Le paramètre index_meta est de type SearchIndexMeta et comprend les éléments suivants.

Nom

Type

Description

fields (obligatoire)

List[FieldSchema]

Champs de l'index.

index_setting (facultatif)

IndexSetting

Paramètres de l'index.

index_sort (facultatif)

Sort

Configuration du prétri. Si ce paramètre n'est pas défini et que l'index ne contient aucun champ Nested, les données sont triées par clé primaire. Le prétri n'est pas pris en charge pour les index Nested.

time_to_live (facultatif)

int

Durée de vie (TTL) des données de l'index, en secondes. Valeur par défaut : -1. La valeur doit être égale à -1 ou à un entier supérieur ou égal à 86400. Une valeur de -1 indique que les données de l'index n'expirent jamais. Si vous choisissez une autre valeur, désactivez les mises à jour via UpdateRow pour la table concernée. La TTL de l'index ne peut pas dépasser celle de la table. Vous pouvez modifier cette valeur ultérieurement au moyen de update_search_index après la création de l'index. Pour plus d'informations, consultez la rubrique Gestion du cycle de vie.

Champs de l'index

Chaque élément du tableau index_meta.fields[] est de type FieldSchema et admet les paramètres ci-après.

Nom

Type

Description

field_name (obligatoire)

str

Nom du champ de l'index. Ce champ peut correspondre à une colonne de clé primaire ou à une colonne d'attribut.

field_type (obligatoire)

FieldType

Type du champ de l'index. Utilisez Nested pour les relations logiques multiniveaux, JSON pour les données au format JSON et Geo-point pour les coordonnées géographiques.

index (facultatif)

bool

Indique s'il faut créer un index inversé ou spatial pour le champ. Valeur par défaut : False. Définissez ce paramètre sur True pour rendre le champ interrogeable.

enable_highlighting (facultatif)

bool

Active ou non la fonctionnalité de résumé et mise en surbrillance. Seuls les champs de type Text sont compatibles. Valeur par défaut : False. Cette option nécessite le SDK Tablestore pour Python version 6.0.0 ou ultérieure. Nous vous recommandons d'utiliser la dernière version disponible.

analyzer (facultatif)

str

Analyseur appliqué à un champ Text. Par défaut, une segmentation par mot unique est utilisée si ce paramètre n'est pas renseigné.

analyzer_parameter (facultatif)

AnalyzerParameter

Paramètres de l'analyseur. Lorsque le paramètre analyzer est défini, précisez ici les options spécifiques à l'analyseur choisi.

enable_sort_and_agg (facultatif)

bool

Active ou non le tri et l'agrégation. Valeur par défaut : False. Les champs Text et Nested ne permettent ni le tri ni l'agrégation, contrairement aux sous-champs d'un champ Nested.

is_array (facultatif)

bool

Précise si le champ est un tableau. Valeur par défaut : False. Les valeurs de type tableau doivent être écrites sous forme de tableaux JSON. Ce paramètre est inutile pour les champs Nested.

sub_field_schemas (facultatif)

List[FieldSchema]

Sous-champs d'un champ Nested ou JSON. Ce paramètre est obligatoire pour ces deux types de champs.

is_virtual_field (facultatif)

bool

Indique si le champ est une colonne virtuelle. Valeur par défaut : False.

source_fields (facultatif)

List[str]

Champs de la table source mappés à la colonne virtuelle. Obligatoire pour toute colonne virtuelle. Un seul champ source est autorisé.

date_formats (facultatif)

List[str]

Formats de date acceptés par un champ Date. Paramètre requis pour les champs de type Date.

vector_options (facultatif)

VectorOptions

Type de données vectorielles, dimension et métrique de distance pour un champ Vector. Paramètre obligatoire pour les champs Vector.

json_type (facultatif)

JsonType

Type d'index JSON. Valeurs valides : JsonType.OBJECT_JSON et JsonType.NESTED_JSON. Ce paramètre est requis pour les champs JSON.

text_similarity (facultatif)

TextSimilarity

Algorithme de similarité pour un champ Text. Valeurs valides : TextSimilarity.BM25 et TextSimilarity.SHORT_TEXT.

Configuration vectorielle

L'objet index_meta.fields[].vector_options est de type VectorOptions et expose les paramètres suivants.

Nom

Type

Description

data_type (obligatoire)

VectorDataType

Type de données vectorielles. Seul VectorDataType.VD_FLOAT_32 est pris en charge.

dimension (obligatoire)

int

Dimension du vecteur. Valeur maximale : 4096.

metric_type (obligatoire)

VectorMetricType

Métrique de distance. Valeurs valides : VectorMetricType.VM_EUCLIDEAN, VectorMetricType.VM_COSINE et VectorMetricType.VM_DOT_PRODUCT. Pour plus de détails, consultez la rubrique Recherche vectorielle.

Paramètres de l'index

L'objet index_meta.index_setting est de type IndexSetting et comporte le paramètre suivant.

Nom

Type

Description

routing_fields (facultatif)

List[str]

Champs de routage personnalisés. Vous pouvez désigner une ou plusieurs colonnes de clé primaire, bien qu'une seule suffise généralement. Lorsque plusieurs colonnes sont spécifiées, leurs valeurs sont concaténées. Les enregistrements partageant la même valeur de champ de routage sont stockés dans la même partition de données.

Configuration du prétri

L'objet index_meta.index_sort est de type Sort et inclut le paramètre ci-dessous.

Nom

Type

Description

sorters (obligatoire)

List[Sorter]

Règles de prétri. PrimaryKeySort effectue un tri par clé primaire, tandis que FieldSort trie selon la valeur d'un champ. Tout champ utilisé avec FieldSort doit avoir le tri et l'agrégation activés. Pour en savoir plus, reportez-vous à la rubrique Tri et pagination.

Tri par clé primaire

Un élément de type PrimaryKeySort dans le tableau index_meta.index_sort.sorters[] permet de trier les données par clé primaire et accepte le paramètre suivant.

Nom

Type

Description

sort_order (facultatif)

SortOrder

Ordre de tri. Valeurs valides : SortOrder.ASC et SortOrder.DESC. Valeur par défaut : SortOrder.ASC.

Tri par valeur de champ

Un élément de type FieldSort dans le tableau index_meta.index_sort.sorters[] trie les données selon la valeur d'un champ et prend en charge les paramètres suivants.

Nom

Type

Description

field_name (obligatoire)

str

Nom du champ.

sort_order (facultatif)

SortOrder

Ordre de tri. Valeurs valides : SortOrder.ASC et SortOrder.DESC. Valeur par défaut : SortOrder.ASC.

sort_mode (facultatif)

SortMode

Valeur retenue pour le tri lorsqu'un champ contient plusieurs valeurs.

Exemples

Configurer le prétri

L'exemple ci-dessous configure un prétri des données de l'index par ordre croissant selon le champ created_at.

table_name = "example_table"
index_name = "example_index"

fields = [
    FieldSchema("category", FieldType.KEYWORD, index=True),
    FieldSchema(
        "created_at",
        FieldType.LONG,
        index=True,
        enable_sort_and_agg=True,
    ),
]
index_sort = Sort([FieldSort("created_at", SortOrder.ASC)])
index_meta = SearchIndexMeta(fields, index_sort=index_sort)

client.create_search_index(table_name, index_name, index_meta)

Configurer la TTL de l'index

Cet exemple définit une durée de vie (TTL) de 7 jours pour l'index.

table_name = "example_table"
index_name = "example_index"

fields = [
    FieldSchema("category", FieldType.KEYWORD, index=True),
    FieldSchema("price", FieldType.LONG, index=True),
]
index_meta = SearchIndexMeta(fields, time_to_live=7 * 24 * 60 * 60)

client.create_search_index(table_name, index_name, index_meta)

Configurer la segmentation

L'exemple suivant applique une segmentation par séparateur au champ Text description, en utilisant la virgule (,) comme délimiteur.

table_name = "example_table"
index_name = "example_index"

fields = [
    FieldSchema("category", FieldType.KEYWORD, index=True),
    FieldSchema(
        "description",
        FieldType.TEXT,
        index=True,
        analyzer=AnalyzerType.SPLIT,
        analyzer_parameter=SplitAnalyzerParameter(","),
    ),
]
index_meta = SearchIndexMeta(fields)

client.create_search_index(table_name, index_name, index_meta)

Créer un champ vectoriel

Le code ci-après crée un champ Vector nommé embedding à quatre dimensions, en utilisant le produit scalaire pour mesurer la similarité entre vecteurs.

table_name = "example_table"
index_name = "example_index"

fields = [
    FieldSchema("category", FieldType.KEYWORD, index=True),
    FieldSchema(
        "embedding",
        FieldType.VECTOR,
        index=True,
        vector_options=VectorOptions(
            data_type=VectorDataType.VD_FLOAT_32,
            dimension=4,
            metric_type=VectorMetricType.VM_DOT_PRODUCT,
        ),
    ),
]
index_meta = SearchIndexMeta(fields)

client.create_search_index(table_name, index_name, index_meta)

Créer des colonnes virtuelles

Dans cet exemple, le champ Keyword category est mappé à une colonne virtuelle de type Long, tandis que le champ Long price est mappé à une colonne virtuelle de type Keyword.

table_name = "example_table"
index_name = "example_index"

fields = [
    FieldSchema("category", FieldType.KEYWORD, index=True),
    FieldSchema(
        "category_as_long",
        FieldType.LONG,
        index=True,
        is_virtual_field=True,
        source_fields=["category"],
    ),
    FieldSchema("price", FieldType.LONG, index=True),
    FieldSchema(
        "price_as_keyword",
        FieldType.KEYWORD,
        index=True,
        is_virtual_field=True,
        source_fields=["price"],
    ),
]
index_meta = SearchIndexMeta(fields)

client.create_search_index(table_name, index_name, index_meta)

Activer la mise en surbrillance

L'exemple suivant active la mise en surbrillance pour le champ Text description.

table_name = "example_table"
index_name = "example_index"

fields = [
    FieldSchema("category", FieldType.KEYWORD, index=True),
    FieldSchema("price", FieldType.LONG, index=True),
    FieldSchema(
        "description",
        FieldType.TEXT,
        index=True,
        enable_highlighting=True,
    ),
]
index_meta = SearchIndexMeta(fields)

client.create_search_index(table_name, index_name, index_meta)