Todos los productos
Search
Centro de documentos

Tablestore:Cree un índice secundario

Última actualización: Sep 03, 2026

Cree un índice secundario global o local para una tabla de datos existente mediante el Tablestore SDK for Java.

Requisitos previos

  • Instale Tablestore SDK for Java e inicialice un cliente.

  • El valor de maxVersions de la tabla de datos es 1 y el valor de timeToLive es -1, o bien los datos no se pueden actualizar mediante UpdateRow.

  • Si desea usar columnas que no son de clave principal como columnas de índice o columnas de atributo, configúrelas como columnas predefinidas.

Descripción general

Un índice secundario usa un esquema de clave principal diferente, compuesto por columnas de clave principal y columnas predefinidas de una tabla de datos, para proporcionar dimensiones de consulta adicionales. Los índices secundarios se clasifican en globales y locales. Ambos tipos tienen distintos modos de sincronización de datos y requisitos de clave principal. Para obtener más información, consulte Overview.

Llame a createIndex para crear un índice secundario en una tabla de datos existente. Para crear uno o varios índices secundarios junto con una tabla de datos, configure los esquemas de índice en la solicitud createTable. Para obtener más información, consulte Create a data table.

public CreateIndexResponse createIndex(CreateIndexRequest createIndexRequest)
        throws TableStoreException, ClientException

A continuación, el código de ejemplo crea el índice secundario global example_global_index para example_table. El índice incluye los datos existentes.

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

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

Parámetros

CreateIndexRequest contiene los siguientes parámetros:

Nombre

Tipo

Descripción

mainTableName (obligatorio)

String

Nombre de la tabla de datos.

indexMeta (obligatorio)

IndexMeta

Información del esquema de la tabla de índice.

includeBaseData (obligatorio)

boolean

Especifica si la tabla de índice incluye los datos existentes de la tabla de datos. Si establece este parámetro en true, se sincronizan los datos existentes; la duración de la sincronización varía según la cantidad de datos. Si lo establece en false, solo se sincronizan los datos escritos después de crear el índice.

Esquema del índice

indexMeta es de tipo IndexMeta y contiene los siguientes parámetros:

Nombre

Tipo

Descripción

indexName (obligatorio)

String

Nombre de la tabla de índice. Debe ser diferente al nombre de cualquier tabla de datos o tabla de series temporales existente.

primaryKey (obligatorio)

List<String>

Lista ordenada de nombres de columnas de índice. Especifique entre una y cuatro columnas, que pueden ser columnas de clave principal o columnas predefinidas de la tabla de datos. Tablestore respeta el orden en que se agregan las columnas y añade automáticamente al final de la clave principal del índice las columnas de clave principal de la tabla de datos no especificadas. En un índice secundario local, la primera columna de clave principal del índice debe coincidir con la primera columna de clave principal de la tabla de datos.

definedColumns (opcional)

List<String>

Lista de nombres de columnas de atributo de la tabla de índice. Solo se pueden especificar columnas predefinidas de la tabla de datos.

indexType (opcional)

IndexType

Tipo de índice. Los valores válidos son IT_GLOBAL_INDEX y IT_LOCAL_INDEX. Valor predeterminado: IT_GLOBAL_INDEX.

indexUpdateMode (opcional)

IndexUpdateMode

Modo de actualización del índice. Un índice secundario global debe usar IUM_ASYNC_INDEX. Tablestore sincroniza de forma asíncrona los datos de las columnas de índice y las columnas de clave principal; la latencia de sincronización suele ser de milisegundos. Un índice secundario local debe usar IUM_SYNC_INDEX. Tablestore actualiza el índice de forma síncrona, por lo que puede consultar datos en la tabla de índice inmediatamente después de escribirlos en la tabla de datos. Valor predeterminado: IUM_ASYNC_INDEX.

Ejemplos de escenarios

Cree un índice secundario local

Para crear un índice secundario local, especifique la primera columna de clave principal de la tabla de datos como la primera columna de clave principal del índice. Además, establezca el tipo de índice en IT_LOCAL_INDEX y el modo de actualización en 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);