Todos los productos
Search
Centro de documentos

Tablestore:Create a search index

Última actualización: Sep 08, 2026

Utilice Tablestore SDK for Python para crear un índice de búsqueda y configurar los campos del índice, el preordenamiento, el tiempo de vida (TTL), las columnas virtuales y el resaltado.

Requisitos previos

  • Instale Tablestore SDK for Python e inicialice un cliente.

  • Una table con el número máximo de versiones establecido en 1.

  • El TTL de la tabla establecido en -1 o las actualizaciones mediante UpdateRow deshabilitadas para la tabla.

Descripción

Llame a create_search_index para crear un índice de búsqueda para una tabla. Una tabla puede tener varios índices de búsqueda. Especifique la tabla, el nombre del índice y la configuración completa del índice en la solicitud. Además, agregue a fields las columnas que desea consultar. Los tipos de los campos del índice deben coincidir con los tipos de datos de las columnas correspondientes de la tabla. Para conocer los tipos compatibles, consulte Data types.

create_search_index(table_name, index_name, index_meta)
Nota

La creación del índice de búsqueda es asíncrona. Una vez que la solicitud se ejecuta correctamente, espere a que finalice la sincronización de los datos del índice antes de consultarlo.

A continuación se muestra un ejemplo que crea example_index en example_table con campos de tipo Keyword y Long. Si no se configura el preordenamiento ni el TTL, el índice se ordena por clave primaria y los datos del índice no caducan.

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)

Parámetros

create_search_index admite los siguientes parámetros.

Nombre

Tipo

Descripción

table_name (obligatorio)

str

El nombre de la tabla.

index_name (obligatorio)

str

El nombre del índice de búsqueda.

index_meta (obligatorio)

SearchIndexMeta

La configuración del índice de búsqueda.

Configuración del índice

index_meta es de tipo SearchIndexMeta y admite los siguientes parámetros.

Nombre

Tipo

Descripción

fields (obligatorio)

List[FieldSchema]

Los campos del índice.

index_setting (opcional)

IndexSetting

Los ajustes del índice.

index_sort (opcional)

Sort

La configuración de preordenamiento. Si no se configura este parámetro y el índice no contiene un campo Nested, los datos se ordenan por clave primaria. Los índices Nested no admiten preordenamiento.

time_to_live (opcional)

int

El TTL de los datos del índice, en segundos. Valor predeterminado: -1. El valor debe ser -1 o un entero mayor o igual a 86400. Un valor de -1 indica que los datos del índice no caducan. Si especifica otro valor, deshabilite las actualizaciones mediante UpdateRow para la tabla. El TTL del índice no puede superar el TTL de la tabla. Puede modificar este valor con update_search_index después de crear el índice. Para obtener más información, consulte Lifecycle management.

Campos del índice

Cada elemento de index_meta.fields[] es de tipo FieldSchema y admite los siguientes parámetros.

Nombre

Tipo

Descripción

field_name (obligatorio)

str

El nombre del campo del índice. El campo puede corresponder a una columna de clave primaria o a una columna de atributos.

field_type (obligatorio)

FieldType

El tipo del campo del índice. Utilice Nested para relaciones lógicas de varias capas, JSON para datos con formato JSON y Geo-point para coordenadas geográficas.

index (opcional)

bool

Indica si se crea un índice invertido o espacial para el campo. Valor predeterminado: False. Establezca este parámetro en True para consultar el campo.

enable_highlighting (opcional)

bool

Indica si se habilita summary and highlighting. Solo los campos Text admiten esta función. Valor predeterminado: False. Este parámetro requiere Tablestore SDK for Python 6.0.0 o posterior. Se recomienda utilizar la versión más reciente.

analyzer (opcional)

str

El analyzer para un campo Text. Si no se configura este parámetro, se utiliza la tokenización de palabra única.

analyzer_parameter (opcional)

AnalyzerParameter

Los parámetros del analizador. Si se configura analyzer, especifique los parámetros del analizador seleccionado.

enable_sort_and_agg (opcional)

bool

Indica si se habilitan la ordenación y la agregación. Valor predeterminado: False. Los campos Text y Nested no admiten ordenación ni agregación, pero los campos secundarios de un campo Nested sí lo hacen.

is_array (opcional)

bool

Indica si el campo es un arreglo. Valor predeterminado: False. Los valores de los arreglos deben escribirse como arreglos JSON. No es necesario configurar este parámetro para los campos Nested.

sub_field_schemas (opcional)

List[FieldSchema]

Los campos secundarios de un campo Nested o JSON. Este parámetro es obligatorio para los campos Nested y JSON.

is_virtual_field (opcional)

bool

Indica si el campo es una columna virtual. Valor predeterminado: False.

source_fields (opcional)

List[str]

Los campos de la tabla de origen asignados a la columna virtual. Este parámetro es obligatorio para una columna virtual. Solo se admite un campo de origen.

date_formats (opcional)

List[str]

Los formatos de fecha que admite un campo Date. Este parámetro es obligatorio para los campos Date.

vector_options (opcional)

VectorOptions

El tipo de datos vectoriales, la dimensión y la métrica de distancia para un campo Vector. Este parámetro es obligatorio para los campos Vector.

json_type (opcional)

JsonType

El tipo de índice JSON. Valores válidos: JsonType.OBJECT_JSON y JsonType.NESTED_JSON. Este parámetro es obligatorio para los campos JSON.

text_similarity (opcional)

TextSimilarity

El algoritmo de similitud para un campo Text. Valores válidos: TextSimilarity.BM25 y TextSimilarity.SHORT_TEXT.

Configuración de vectores

index_meta.fields[].vector_options es de tipo VectorOptions y admite los siguientes parámetros.

Nombre

Tipo

Descripción

data_type (obligatorio)

VectorDataType

El tipo de datos vectoriales. Solo se admite VectorDataType.VD_FLOAT_32.

dimension (obligatorio)

int

La dimensión del vector. Valor máximo: 4096.

metric_type (obligatorio)

VectorMetricType

La métrica de distancia. Valores válidos: VectorMetricType.VM_EUCLIDEAN, VectorMetricType.VM_COSINE y VectorMetricType.VM_DOT_PRODUCT. Para obtener más información, consulte Vector search.

Ajustes del índice

index_meta.index_setting es de tipo IndexSetting y admite el siguiente parámetro.

Nombre

Tipo

Descripción

routing_fields (opcional)

List[str]

Los campos de enrutamiento personalizados. Puede especificar una o más columnas de clave primaria. En la mayoría de los casos, basta con especificar una sola columna. Si especifica varias columnas, sus valores se concatenan. Los registros con el mismo valor en el campo de enrutamiento se escriben en la misma partición de datos.

Configuración de preordenamiento

index_meta.index_sort es de tipo Sort y admite el siguiente parámetro.

Nombre

Tipo

Descripción

sorters (obligatorio)

List[Sorter]

Las reglas de preordenamiento. PrimaryKeySort ordena por clave primaria y FieldSort ordena por el valor del campo. Un campo utilizado por FieldSort debe tener habilitadas la ordenación y la agregación. Para obtener más información, consulte Sorting and paging.

Ordenación por clave primaria

Un elemento de tipo PrimaryKeySort dentro de index_meta.index_sort.sorters[] ordena los datos por clave primaria y admite el siguiente parámetro.

Nombre

Tipo

Descripción

sort_order (opcional)

SortOrder

El orden de clasificación. Valores válidos: SortOrder.ASC y SortOrder.DESC. Valor predeterminado: SortOrder.ASC.

Ordenación por valor de campo

Un elemento de tipo FieldSort dentro de index_meta.index_sort.sorters[] ordena los datos por el valor del campo y admite los siguientes parámetros.

Nombre

Tipo

Descripción

field_name (obligatorio)

str

El nombre del campo.

sort_order (opcional)

SortOrder

El orden de clasificación. Valores válidos: SortOrder.ASC y SortOrder.DESC. Valor predeterminado: SortOrder.ASC.

sort_mode (opcional)

SortMode

El valor que se utiliza para ordenar cuando un campo contiene varios valores.

Ejemplos

Configurar el preordenamiento

En el siguiente ejemplo, los datos del índice se preordenan por el campo created_at en orden ascendente.

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)

Configurar el TTL del índice

En el siguiente ejemplo, el TTL del índice se establece en 7 días.

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)

Configurar la tokenización

En el siguiente ejemplo se configura la tokenización por división para el campo Text description y se utiliza una coma (,) como delimitador.

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)

Crear un campo vectorial

En el siguiente ejemplo se crea un campo Vector de cuatro dimensiones llamado embedding y se utiliza el producto punto para medir la similitud entre vectores.

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)

Crear columnas virtuales

En el siguiente ejemplo, el campo Keyword category se asigna a una columna virtual Long y el campo Long price se asigna a una columna virtual 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)

Habilitar el resaltado

En el siguiente ejemplo se habilita el resaltado para el campo 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)