Todos los productos
Search
Centro de documentos

Tablestore:Crear un índice de búsqueda

Última actualización: Sep 03, 2026

Utilice el método CreateSearchIndex para crear un índice de búsqueda en una tabla de datos. Una tabla de datos puede tener varios índices de búsqueda. Al crear un índice de búsqueda, agregue al índice los campos que desea consultar. También puede configurar opciones avanzadas, como rutas personalizadas y preordenación.

Requisitos previos

  • Un cliente de Tablestore inicializado. Para obtener más información, consulte Initialize a Tablestore client.

  • Una tabla de datos creada con max versions establecido en 1 y time to live establecido en -1. Para obtener más información, consulte Create a data table.

Notas de uso

Los data types de los campos en el índice de búsqueda deben coincidir con los tipos de datos de los campos correspondientes en la tabla de datos.

API

/**
 * Create a search index.
 * @api
 *
 * @param [] $request
 *            The request parameters, such as the table name and index configuration.
 * @return [] The response.
 * @throws OTSClientException Thrown if a parameter check fails or the server returns a verification error.
 * @throws OTSServerException Thrown if the Tablestore server returns an error.
 * @example "src/examples/CreateSearchIndex.php"
 */
public function createSearchIndex(array $request)

Parámetros

Especifique el nombre de la tabla (table_name), el nombre del índice de búsqueda (index_name) y el esquema del índice (schema). El esquema incluye field_schemas (configuración de campos), index_setting (configuración del índice) e index_sort (configuración de preordenación).

Parámetro

Descripción

table_name

Nombre de la tabla de datos.

index_name

Nombre del índice de búsqueda.

field_schemas

Lista de esquemas de campos. Cada field_schema incluye los siguientes parámetros:

  • field_name (obligatorio): Nombre del campo por indexar, que corresponde al nombre de la columna. Tipo de dato: String.

    El campo puede ser una columna de clave principal o una columna de atributo.

  • field_type (obligatorio): data type del campo, en formato FieldTypeConst::XXX.

  • is_array (opcional): Indica si la columna es un arreglo. Tipo de dato: Boolean.

    Si se establece en true, la columna almacena datos de arreglo. Escriba los datos en formato de arreglo JSON, como ["a","b","c"].

    Los campos anidados son arreglos de forma predeterminada. Si field_type es Nested, omita este parámetro.

  • index (opcional): Indica si se habilita la indexación para la columna. Tipo de dato: Boolean.

    Valor predeterminado: true, lo que genera un índice invertido o un índice espacial para la columna. Establezca este valor en false para omitir la indexación.

  • analyzer (opcional): Tipo de tokenization. Aplicable solo a campos de tipo Text. Valor predeterminado: tokenización de palabra única.

  • enable_sort_and_agg (opcional): Indica si se habilitan la ordenación y la agregación. Tipo de dato: Boolean.

    Solo los campos con enable_sort_and_agg establecido en true admiten sorting.

    Importante

    Los campos de tipo Nested no admiten ordenación ni agregación. Sin embargo, las subcolumnas dentro de un campo Nested sí admiten esta función.

index_setting

Configuración del índice, incluida la configuración routing_fields.

routing_fields (opcional): Campos de enrutamiento personalizados. Puede seleccionar algunas columnas de clave principal como campos de enrutamiento. En la mayoría de los casos, solo necesita establecer uno. Si configura varias claves de enrutamiento, el sistema concatena sus valores en un solo valor.

Al escribir datos de índice, el sistema calcula la ubicación de distribución de dichos datos según los valores de los campos de enrutamiento. Los registros con los mismos valores de campo de enrutamiento se indexan en la misma partición de datos.

index_sort

Configuración de preordenación del índice, incluida la configuración sorters. Valor predeterminado: ordenado por clave principal.

Nota

Los índices que contienen campos de tipo Nested no admiten index_sort y no se preordenan.

sorters (obligatorio): Método de preordenación para el índice de búsqueda. Admite PrimaryKeySort y FieldSort. Para obtener más información, consulte Sorting and paging.

  • PrimaryKeySort: Ordena los datos por clave principal. Incluye la siguiente configuración:

    order: Orden de clasificación, ascendente o descendente. Valor predeterminado: ascendente (SortOrderConst::SORT_ORDER_ASC).

  • FieldSort: Ordena los datos por valor de campo. Incluye las siguientes configuraciones:

    Solo los campos indexados con ordenación y agregación habilitadas pueden preordenarse.

    • field_name: Nombre del campo por el cual ordenar.

    • order: Orden de clasificación, ascendente o descendente. Valor predeterminado: ascendente (SortOrderConst::SORT_ORDER_ASC).

    • mode: Método de ordenación que se utiliza cuando un campo tiene varios valores.

Ejemplo

Cree un índice de búsqueda con las siguientes columnas: keyword (Keyword), text (Text), geo (Geo-point), long (Long), double (Double), boolean (Boolean), array (Keyword) y nested (Nested). La columna nested contiene una subcolumna nested_keyword de tipo Keyword. El índice se preordena por clave principal y nunca caduca.

$request = array(
    'table_name' => 'php_sdk_test',
    'index_name' => 'php_sdk_test_search_index',
    'schema' => array(
        'field_schemas' => array(
            array(
                'field_name' => 'keyword',
                'field_type' => FieldTypeConst::KEYWORD,
                'index' => true,
                'enable_sort_and_agg' => true,
                'is_array' => false
            ),
            array(
                'field_name' => 'text',
                'field_type' => FieldTypeConst::TEXT,
                'analyzer' => 'single_word',
                'index' => true,
                'enable_sort_and_agg' => false,
                'is_array' => false
            ),
            array(
                'field_name' => 'geo',
                'field_type' => FieldTypeConst::GEO_POINT,
                'index' => true,
                'enable_sort_and_agg' => true,
                'is_array' => false
            ),
            array(
                'field_name' => 'long',
                'field_type' => FieldTypeConst::LONG,
                'index' => true,
                'enable_sort_and_agg' => true,
                'is_array' => false
            ),
            array(
                'field_name' => 'double',
                'field_type' => FieldTypeConst::DOUBLE,
                'index' => true,
                'enable_sort_and_agg' => true,
                'is_array' => false
            ),
            array(
                'field_name' => 'boolean',
                'field_type' => FieldTypeConst::BOOLEAN,
                'index' => true,
                'enable_sort_and_agg' => false,
                'is_array' => false
            ),
            array(
                'field_name' => 'array',
                'field_type' => FieldTypeConst::KEYWORD,
                'index' => true,
                'enable_sort_and_agg' => false,
                'is_array' => true
            ),
            array(
                'field_name' => 'nested',
                'field_type' => FieldTypeConst::NESTED,
                'index' => false,
                'enable_sort_and_agg' => false,
                'field_schemas' => array(
                    array(
                        'field_name' => 'nested_keyword',
                        'field_type' => FieldTypeConst::KEYWORD,
                        'index' => false,
                        'enable_sort_and_agg' => false,
                        'is_array' => false
                    )
                )
            ),
        ),
        'index_setting' => array(
            'routing_fields' => array("pk1")
        ),
//        "index_sort" => array(// Indexes that contain Nested type fields do not support index_sort and are not presorted.
//            array(
//                'field_sort' => array(
//                    'field_name' => 'keyword',
//                    'order' => SortOrderConst::SORT_ORDER_ASC,
//                    'mode' => SortModeConst::SORT_MODE_AVG,
//                )
//            ),
//            array(
//                'pk_sort' => array(
//                    'order' => SortOrderConst::SORT_ORDER_ASC
//                )
//            ),
//        )
    )
);
$response = $otsClient->createSearchIndex($request);

Preguntas frecuentes

Referencias