Tous les produits
Search
Centre de documentation

Tablestore:Create a secondary index

Dernière mise à jour :Aug 18, 2026

Créez un index secondaire global ou local pour une table de données existante à l'aide du SDK Tablestore pour Java.

Prérequis

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

  • La valeur maxVersions de la table de données est définie sur 1 et la valeur timeToLive sur -1, ou bien les données ne peuvent pas être mises à jour via l'appel à UpdateRow.

  • Si vous souhaitez utiliser des colonnes autres que les clés primaires comme colonnes d'index ou colonnes d'attribut, configurez-les en tant que colonnes prédéfinies.

Description

Un index secondaire utilise un schéma de clé primaire différent, composé de colonnes de clé primaire et de colonnes prédéfinies issues d'une table de données, afin de fournir des dimensions de requête supplémentaires. Les index secondaires se divisent en index globaux et locaux. Ces deux types d'index présentent des modes de synchronisation des données et des exigences en matière de clé primaire distincts. Pour plus d'informations, consultez la rubrique Présentation.

Appelez createIndex pour créer un index secondaire sur une table de données existante. Pour créer un ou plusieurs index secondaires conjointement avec une table de données, configurez les schémas d'index dans la requête createTable. Pour plus d'informations, consultez la rubrique Créer une table de données.

public CreateIndexResponse createIndex(CreateIndexRequest createIndexRequest)
        throws TableStoreException, ClientException

L'exemple de code suivant crée l'index secondaire global example_global_index pour la table example_table. L'index inclut les données existantes.

IndexMeta indexMeta = new IndexMeta("example_global_index");
indexMeta.addPrimaryKeyColumn("category");
indexMeta.addDefinedColumn("status");

CreateIndexRequest request =
        new CreateIndexRequest("example_table", indexMeta, true);
client.createIndex(request);

Paramètres

CreateIndexRequest contient les paramètres suivants :

Nom

Type

Description

mainTableName (obligatoire)

String

Nom de la table de données.

indexMeta (obligatoire)

IndexMeta

Informations de schéma relatives à la table d'index.

includeBaseData (obligatoire)

boolean

Indique si la table d'index inclut les données existantes de la table de données. Si vous définissez ce paramètre sur true, les données existantes sont synchronisées ; la durée de synchronisation varie selon le volume de données. Si vous définissez ce paramètre sur false, seules les données écrites après la création de l'index sont synchronisées.

Schéma d'index

indexMeta est de type IndexMeta et contient les paramètres suivants :

Nom

Type

Description

indexName (obligatoire)

String

Nom de la table d'index. Le nom doit différer de celui d'une table de données ou d'une table de séries temporelles existante.

primaryKey (obligatoire)

List<String>

Liste ordonnée des noms de colonnes d'index. Spécifiez une à quatre colonnes, qui peuvent être des colonnes de clé primaire ou des colonnes prédéfinies de la table de données. Tablestore utilise l'ordre d'ajout des colonnes et ajoute automatiquement les colonnes de clé primaire non spécifiées de la table de données à la fin de la clé primaire de l'index. Pour un index secondaire local, la première colonne de clé primaire de l'index doit être identique à la première colonne de clé primaire de la table de données.

definedColumns (facultatif)

List<String>

Liste des noms de colonnes d'attribut de la table d'index. Seules les colonnes prédéfinies de la table de données peuvent être spécifiées.

indexType (facultatif)

IndexType

Type d'index. Les valeurs valides sont IT_GLOBAL_INDEX et IT_LOCAL_INDEX. Valeur par défaut : IT_GLOBAL_INDEX.

indexUpdateMode (facultatif)

IndexUpdateMode

Mode de mise à jour de l'index. Un index secondaire global doit utiliser IUM_ASYNC_INDEX. Tablestore synchronise de manière asynchrone les données des colonnes d'index et des colonnes de clé primaire ; la latence de synchronisation se situe généralement au niveau de la milliseconde. Un index secondaire local doit utiliser IUM_SYNC_INDEX. Tablestore met à jour l'index de manière synchrone ; vous pouvez interroger les données de la table d'index dès qu'elles sont écrites dans la table de données. Valeur par défaut : IUM_ASYNC_INDEX.

Exemples de scénarios

Créer un index secondaire local

Pour créer un index secondaire local, spécifiez la première colonne de clé primaire de la table de données comme première colonne de clé primaire de l'index, et définissez respectivement le type d'index et le mode de mise à jour sur IT_LOCAL_INDEX et IUM_SYNC_INDEX.

IndexMeta indexMeta = new IndexMeta("example_local_index");
indexMeta.addPrimaryKeyColumn("user_id");
indexMeta.addPrimaryKeyColumn("category");
indexMeta.addDefinedColumn("status");
indexMeta.setIndexType(IndexType.IT_LOCAL_INDEX);
indexMeta.setIndexUpdateMode(IndexUpdateMode.IUM_SYNC_INDEX);

CreateIndexRequest request =
        new CreateIndexRequest("example_table", indexMeta, true);
client.createIndex(request);