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
Cliente do Tablestore inicializado. Para mais informações, consulte Inicializar um cliente do Tablestore.
Tabela de dados criada com
max versionsdefinido como 1 etime to livedefinido como -1. Para mais informações, consulte Criar uma tabela de dados.
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
|
|
index_setting |
Configurações do índice, incluindo 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 Nota
Índices que contêm campos do tipo Nested não suportam 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.
|
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
Após criar um índice de pesquisa, utilize seus métodos de consulta para realizar consultas multidimensionais de dados. Os métodos suportados incluem consulta de termo, consulta de termos, consulta match all, consulta match, consulta match phrase, consulta de prefixo, consulta de intervalo, consulta wildcard, consulta geográfica, consulta Boolean, consulta aninhada e consulta exists.
Aplique classificação e paginação ou colapso (deduplicação) aos resultados da consulta.
Gerencie os índices de pesquisa conforme necessário. Para mais informações, consulte Modifique dinamicamente o esquema, Listar índices de pesquisa, Consultar a descrição de um índice de pesquisa e Exclua um índice de pesquisa.
Para analisar dados, como encontrar valores máximos e mínimos, calcular somas ou contar linhas, use o recurso de agregação estatística ou de consulta SQL.
Para exportar dados rapidamente sem exigir uma ordem específica, utilize o recurso de varredura paralela.