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 versionsestablecido en 1 ytime to liveestablecido 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
|
|
index_setting |
Configuración del índice, incluida la configuración 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 Nota
Los índices que contienen campos de tipo Nested no admiten 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.
|
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
Después de crear un índice de búsqueda, utilice sus métodos de consulta para consultar datos multidimensionales. Los métodos de consulta compatibles incluyen term query, terms query, match all query, match query, match phrase query, prefix query, range query, wildcard query, geo query, Boolean query, nested query y exists query.
Aplique sorting and pagination o collapsing (deduplication) a los resultados de la consulta.
Gestione los índices de búsqueda según sea necesario. Para obtener más información, consulte Dynamically modify schema, List search indexes, Query the description of a search index y Delete a search index.
Para analizar datos, como buscar valores máximos y mínimos, calcular sumas o contar filas, utilice la función statistical aggregation o la función SQL query.
Para exportar datos rápidamente sin requerir un orden específico, utilice la función parallel scan.