Todos los productos
Search
Centro de documentos

Tablestore:Crear un índice secundario

Última actualización: Oct 09, 2026

La función de índice secundario permite consultar datos con base en la clave principal de una tabla de datos y en las columnas de índice del índice secundario creado para dicha tabla. Si desea utilizar las columnas de atributo de una tabla de datos para consultar información, cree un índice secundario para acelerar las consultas. Al crear un índice secundario para una tabla de datos, puede establecer las columnas de índice o las columnas de atributo del índice secundario como las columnas predefinidas que especificó al crear la tabla de datos. Una vez creado el índice secundario, utilícelo para consultar datos.

Nota
  • Los índices secundarios se clasifican en índices secundarios globales e índices secundarios locales. Para obtener más información sobre esta función, consulte Overview.

  • Puede crear una o más tablas de índice al momento de crear una tabla de datos mediante la operación CreateTable. Para obtener más información, consulte Create a data table.

Requisitos previos

  • Se inicializó una instancia de OTSClient. Para obtener más información, consulte Initialize an OTSClient instance.

  • Se creó una tabla de datos con el parámetro max_version establecido en 1. El parámetro time_to_live de la tabla de datos debe cumplir una de a continuación condiciones: Para obtener más información, consulte Create a data table.

    • El parámetro time_to_live de la tabla de datos se estableció en -1, lo cual indica que los datos de la tabla nunca caducan.

    • El parámetro time_to_live de la tabla de datos se estableció en un valor distinto de -1 y las operaciones de actualización en la tabla están prohibidas.

  • Se especificaron las columnas predefinidas para la tabla de datos.

Descripción

Un índice secundario utiliza 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 índices secundarios globales e índices secundarios locales. Ambos tipos tienen modos de sincronización de datos y requisitos de clave principal distintos. Para obtener más información, consulte Overview.

Llame a createIndex para crear un índice secundario en una tabla de datos existente. Si necesita crear uno o más í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 se muestra un ejemplo de código que crea el índice secundario global example_global_index para example_table. Este í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

Parámetro

Descripción

main_table_name

Nombre de la tabla de datos.

index_meta

Información del esquema de la tabla de índice. Esta información contiene los siguientes elementos:

  • index_name: nombre de la tabla de índice.

  • primary_key_names: clave principal de la tabla de índice. La clave principal es una combinación de todas las columnas de clave principal y un número arbitrario de columnas predefinidas de la tabla de datos.

    Si desea crear un índice secundario local, la primera columna de clave principal de la tabla de índice debe ser igual a la primera columna de clave principal de la tabla de datos.

  • defined_column_names: columnas de atributo de la tabla de índice. Estas columnas son una combinación de las columnas predefinidas de la tabla de datos.

  • index_type: tipo de la tabla de índice. Valores válidos: IT_GLOBAL_INDEX e IT_LOCAL_INDEX.

    • Si no especifica el parámetro index_type o lo establece en IT_GLOBAL_INDEX, se crea un índice secundario global.

      Tablestore sincroniza automáticamente los datos de las columnas indexadas y de las columnas de clave principal de la tabla de datos hacia las columnas de la nueva tabla de índice. Esta sincronización se realiza de forma asíncrona y su latencia es de unos pocos milisegundos.

    • Si establece el parámetro index_type en IT_LOCAL_INDEX, se crea un índice secundario local.

      Tablestore sincroniza automáticamente los datos de las columnas indexadas y de las columnas de clave principal de la tabla de datos hacia las columnas de la nueva tabla de índice. Esta sincronización se realiza de forma síncrona, por lo que puede consultar los datos en la tabla de índice inmediatamente después de escribirlos en la tabla de datos.

include_base_data

Indica si la tabla de índice incluirá los datos existentes de la tabla de datos.

Si establece el parámetro include_base_data en true, la tabla de índice incluye los datos existentes. Si lo establece en false, la tabla de índice los excluye.

Ejemplos

Crear un índice secundario global

A continuación se muestra un ejemplo de código para crear un índice secundario en una tabla de datos. En este caso, las columnas de clave principal de la tabla de datos son pk1 y pk2. Las columnas de clave principal especificadas para el índice secundario son definedcol1 y pk1, mientras que las columnas de atributo definidas son definedcol2 y definedcol3.

# Specify the metadata of the index table. 
# Specify the name, primary key columns, and attribute columns of the index table in sequence. 
index_meta = SecondaryIndexMeta('<INDEX_NAME>', ['definedcol1', 'pk1'], ['definedcol2', 'definedcol3'])
# Specify the name of the data table and specify that the index table does not include the existing data of the data table. 
client.create_secondary_index('<TABLE_NAME>', index_meta, False)
# Specify the name of the data table and specify that the index table includes the existing data of the data table. 
# After you create the index table, the existing data of the data table is synchronized to the index table. After the existing data is synchronized, you can use the index table to query all data in the data table. The time that is required for synchronization varies based on the amount of data to synchronize. 
# client.create_secondary_index('<TABLE_NAME>', index_meta, True)

Crear un índice secundario local

A continuación se muestra un ejemplo de código para crear un índice secundario en una tabla de datos. En este caso, las columnas de clave principal de la tabla de datos son pk1 y pk2. Las columnas de clave principal especificadas para el índice secundario son definedcol1 y pk1, mientras que las columnas de atributo definidas son definedcol2 y definedcol3.

# Specify the metadata of the index table. 
# Specify the name, primary key columns, attribute columns, and type of the index table in sequence. 
# The first primary key column of a local secondary index must be the same as the first primary key column of the data table. 
index_meta = SecondaryIndexMeta('<INDEX_NAME>', ['pk1', 'definedcol1'], ['definedcol2', 'definedcol3'],index_type= SecondaryIndexType.LOCAL_INDEX)
# Specify the name of the data table and specify that the index table does not include the existing data of the data table.
client.create_secondary_index('<TABLE_NAME>', index_meta, False)
# Specify the name of the data table and specify that the index table includes the existing data of the data table. 
# After you create the index table, the existing data of the data table is synchronized to the index table. After the existing data is synchronized, you can use the index table to query all data in the data table. The time that is required for synchronization varies based on the amount of data to synchronize. 
# client.create_secondary_index('<TABLE_NAME>', index_meta, True)

Referencias

  • Una vez creado el índice secundario, puede utilizarlo para leer una sola fila de datos o aquellos cuya clave principal esté dentro de un rango específico. Para obtener más información, consulte Use a secondary index to read data.

  • Puede eliminar un índice secundario que ya no necesite. Para obtener más información, consulte Delete a secondary index.