Todos os produtos
Search
Central de documentação

Tablestore:Crie um índice de pesquisa

Última atualização: Jul 03, 2026

Use o método CreateSearchIndex para criar um índice de pesquisa em uma tabela de dados. Uma tabela pode ter vários índices de pesquisa. Ao criar o índice, adicione os campos que deseja consultar. Também é possível definir opções avançadas, como rotas personalizadas e pré-classificação.

Pré-requisitos

Observações de uso

Os tipos de dados dos campos no índice de pesquisa devem corresponder aos tipos de dados dos campos equivalentes na tabela de dados.

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 o nome da tabela (table_name), o nome do índice de pesquisa (index_name) e o esquema do índice (schema). O esquema inclui field_schemas (configurações de campo), index_setting (configurações do índice) e index_sort (configurações de pré-classificação).

Parâmetro

Descrição

table_name

Nome da tabela de dados.

index_name

Nome do índice de pesquisa.

field_schemas

Lista de esquemas de campos. Cada field_schema inclui os seguintes parâmetros:

  • field_name (Obrigatório): Nome do campo a ser indexado (nome da coluna). Tipo de dado: String.

    O campo pode ser uma coluna de chave primária ou de atributo.

  • field_type (Obrigatório): Tipo de dado do campo, no formato FieldTypeConst::XXX.

  • is_array (Opcional): Define se a coluna é um array. Tipo de dado: Boolean.

    Se definido como true, a coluna armazena dados em array. Grave os dados no formato de array JSON, como ["a","b","c"].

    Campos aninhados são arrays por padrão. Se field_type for Nested, ignore este parâmetro.

  • index (Opcional): Define se a indexação deve ser ativada para a coluna. Tipo de dado: Boolean.

    Padrão: true. Cria um índice invertido ou espacial para a coluna. Defina como false para ignorar a indexação.

  • analyzer (Opcional): Tipo de tokenização. Aplicável apenas a campos Text. Padrão: tokenização de palavra única.

  • enable_sort_and_agg (Opcional): Define se a classificação e a agregação devem ser ativadas. Tipo de dado: Boolean.

    Apenas campos com enable_sort_and_agg definido como true oferecem suporte à classificação.

    Importante

    Campos do tipo Nested não suportam classificação e agregação. No entanto, subcolunas dentro de um campo Nested oferecem suporte a esse recurso.

index_setting

Configurações do índice, incluindo routing_fields.

routing_fields (Opcional): Campos de roteamento personalizados. Selecione algumas colunas de chave primária como campos de roteamento. Na maioria dos casos, basta definir apenas um. Se você definir várias chaves de roteamento, o sistema concatena seus valores em um único valor.

Ao gravar dados no índice, o sistema calcula a localização de distribuição com base nos valores dos campos de roteamento. Registros com os mesmos valores de campo de roteamento são indexados na mesma partição de dados.

index_sort

Configurações de pré-classificação do índice, incluindo sorters. Padrão: classificado pela chave primária.

Nota

Índices que contêm campos do tipo Nested não suportam index_sort e não são pré-classificados.

sorters (Obrigatório): Método de pré-classificação para o índice de pesquisa. Suporta PrimaryKeySort e FieldSort. Para mais informações, consulte Classificação e paginação.

  • PrimaryKeySort: Classifica os dados pela chave primária. Inclui a seguinte configuração:

    order: Ordem de classificação (crescente ou decrescente). Padrão: crescente (SortOrderConst::SORT_ORDER_ASC).

  • FieldSort: Classifica os dados pelo valor do campo. Inclui as seguintes configurações:

    Apenas campos indexados com classificação e agregação ativadas podem ser pré-classificados.

    • field_name: Nome do campo usado para classificação.

    • order: Ordem de classificação (crescente ou decrescente). Padrão: crescente (SortOrderConst::SORT_ORDER_ASC).

    • mode: Método de classificação usado quando um campo possui vários valores.

Exemplo

Crie um índice de pesquisa com as seguintes colunas: keyword (Keyword), text (Text), geo (Geo-point), long (Long), double (Double), boolean (Boolean), array (Keyword) e nested (Nested). A coluna nested contém uma subcoluna nested_keyword do tipo Keyword. O índice é pré-classificado pela chave primária e nunca expira.

$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);

FAQ

Referências