Cree y gestione índices de búsqueda con la CLI de Tablestore para consultar datos por columnas que no son clave principal y combinar varias condiciones.
Requisitos previos
La CLI de Tablestore con las credenciales de acceso configuradas. Para más información, consulte Tablestore CLI.
Una tabla de datos. Para más información, consulte Data table operations.
Crear un índice de búsqueda
create_search_index -n <indexName>
|
Parámetro |
Obligatorio |
Descripción |
|
-i, --input |
No |
Ruta al archivo JSON que define el esquema del índice de búsqueda. Si no se especifica, la CLI usa entrada interactiva. |
|
-n, --name |
Sí |
Nombre del índice de búsqueda. |
|
-t, --table |
No |
Nombre de la tabla de datos. No es necesario si ya seleccionó una tabla de datos con el comando |
|
--ttl |
No |
Tiempo de vida (TTL) de los datos; especifique cuánto tiempo se conservan. Unidad: segundos. Valor predeterminado: -1 (los datos nunca caducan). Valor mínimo: 86400 (un día). Los datos que superan el TTL se eliminan automáticamente. Importante
Para usar la función Lifecycle management del índice de búsqueda, deshabilite la operación UpdateRow en la tabla de datos. El TTL del índice de búsqueda y el de la tabla de datos son independientes. El TTL del índice de búsqueda debe ser menor o igual al de la tabla de datos. |
Cuando se le solicite, introduzca el esquema del índice en formato JSON o use el parámetro -i para especificar un archivo de esquema. El esquema contiene la siguiente configuración:
|
Parámetro |
Obligatorio |
Descripción |
|
IndexSetting |
No |
Configuración del índice, incluidos RoutingFields. RoutingFields (opcional): Campos de enrutamiento personalizados. Seleccione columnas de clave principal como campos de enrutamiento. Los datos con los mismos valores de campo de enrutamiento se distribuyen en la misma partición durante las operaciones de lectura y escritura, lo que mejora el rendimiento de las consultas. Por lo general, establezca solo un campo de enrutamiento. Si configura varios, Tablestore concatena los valores en uno solo. |
|
FieldSchemas |
Sí |
Lista de objetos FieldSchema. Cada FieldSchema contiene los siguientes campos:
|
|
IndexSort |
No |
Configuración de preordenación del índice. Predeterminado: ordenado por clave principal. Importante
Los índices que contienen campos Nested no admiten IndexSort y no pueden preordenarse. Sorters (opcional): Método de preordenación. Admite ordenación por clave principal (PrimaryKeySort) y por valor de campo (FieldSort). Para más información, consulte Sorting and paging.
|
Ejemplos
Cree un índice de búsqueda llamado search_index.
create_search_index -n search_index
Introduzca el esquema del índice cuando se le solicite. Ejemplo:
{
"IndexSetting": {
"RoutingFields": null
},
"FieldSchemas": [
{
"FieldName": "gid",
"FieldType": "LONG",
"Index": true,
"EnableSortAndAgg": true,
"Store": true,
"IsArray": false,
"IsVirtualField": false
},
{
"FieldName": "col3",
"FieldType": "TEXT",
"Index": true,
"Analyzer": "single_word",
"AnalyzerParameter": {
"CaseSensitive": true,
"DelimitWord": null
},
"EnableSortAndAgg": false,
"Store": true,
"IsArray": false,
"IsVirtualField": false
}
],
"IndexSort": {
"Sorters": [
{
"Name": "PrimaryKeySort",
"Sorter": {
"Order": "ASC"
}
}
]
}
}
Cree un índice de búsqueda desde un archivo:
create_search_index -n search_index -i /tmp/indexschema.json
Listar índices de búsqueda
list_search_index
|
Parámetro |
Obligatorio |
Descripción |
|
-a, --all |
No |
Lista los índices de búsqueda de todas las tablas de datos. |
|
-d, --detail |
No |
Muestra información detallada sobre los índices de búsqueda. |
|
-t, --table |
No |
Nombre de la tabla de datos. No es necesario si ya seleccionó una tabla de datos con el comando |
Ejemplos
Liste los índices de búsqueda de la tabla de datos actual con detalles.
list_search_index -d
Consultar detalles del índice de búsqueda
describe_search_index -n <indexName>
|
Parámetro |
Obligatorio |
Descripción |
|
-n, --name |
Sí |
Nombre del índice de búsqueda. |
|
-o, --output |
No |
Guarde la salida en un archivo JSON o TXT local. |
|
-t, --table |
No |
Nombre de la tabla de datos. No es necesario si ya seleccionó una tabla de datos con el comando |
Ejemplos
Consulte los detalles del índice search_index.
describe_search_index -n search_index
El campo Index schema en la salida contiene el esquema del índice de búsqueda. TimeToLive muestra el TTL del índice de búsqueda.
Consultar datos con un índice de búsqueda
La CLI de Tablestore admite los siguientes tipos de consulta de índice de búsqueda: Term query, Terms query, Match all query, Match query, Match phrase query, Prefix query, Range query, Wildcard query, Token-based wildcard query, Boolean query, Geo query y Exists query. Seleccione un tipo de consulta adecuado para su caso de uso.
search -n <indexName> --return_all_indexed
|
Parámetro |
Obligatorio |
Descripción |
|
-c, --column |
No |
Columnas a devolver. Separe varios nombres de columna con comas (,). |
|
-n, --name |
Sí |
Nombre del índice de búsqueda. |
|
-f, --print_format |
No |
Formato de salida. Valor predeterminado: table. |
|
--return_all |
No |
Devuelve todas las columnas. |
|
--return_all_indexed |
No |
Devuelve todas las columnas indexadas en el índice de búsqueda. |
|
-t, --table |
No |
Nombre de la tabla de datos. No es necesario si ya seleccionó una tabla de datos con el comando |
Cuando se le solicite, introduzca las condiciones de consulta en formato JSON. Las condiciones de consulta contienen la siguiente configuración:
|
Parámetro |
Obligatorio |
Descripción |
|
Offset |
No |
Posición desde la cual comenzar a devolver resultados. |
|
Limit |
No |
Número máximo de filas a devolver. Para obtener solo el recuento de filas sin devolver datos, establezca Limit en 0. |
|
Collapse |
No |
Configuración de colapso. Use este parámetro para aplicar Collapse (remove duplicates) al conjunto de resultados según una columna específica. FieldName especifica el nombre de la columna. Solo se admiten columnas de enteros, punto flotante y Keyword. |
|
Sort |
No |
Orden de clasificación de los resultados. Para más información, consulte Define at query time. Si no se establece, los resultados se devuelven en el orden de preordenación. Si no se define un orden de preordenación, los resultados se devuelven en orden de clave principal. |
|
GetTotalCount |
No |
Especifica si se devuelve el número total de filas coincidentes. Valor predeterminado: false. Habilitar esta opción puede aumentar la latencia de la consulta. |
|
Token |
No |
Token de paginación para leer los resultados restantes. Cuando una respuesta no contiene todas las filas coincidentes, el servidor devuelve un Token. Pase este Token en la siguiente solicitud para continuar leyendo. Establezca Token en null para la primera solicitud. |
|
Query |
Sí |
Tipo de consulta. Tipos compatibles: MatchAllQuery, MatchQuery, MatchPhraseQuery, TermQuery, TermsQuery, PrefixQuery, RangeQuery, WildcardQuery, ExistsQuery, NestedQuery, KnnVectorQuery y BoolQuery. |
|
Aggregations |
No |
Configuración de Aggregation. Admite operaciones de valor mínimo, valor máximo, suma, promedio, recuento y recuento distinto.
|
Ejemplos
Consulte datos en la tabla actual con search_index y devuelva todas las columnas indexadas.
search -n search_index --return_all_indexed
Introduzca las condiciones de consulta cuando se le solicite. El siguiente ejemplo consulta filas donde uid es igual a 10001 y calcula el promedio de la columna pid:
{
"Offset": -1,
"Limit": 10,
"Collapse": null,
"Sort": null,
"GetTotalCount": true,
"Token": null,
"Query": {
"Name": "TermQuery",
"Query": {
"FieldName": "uid",
"Term": 10001
}
},
"Aggregations": [{
"Name": "avg",
"Aggregation": {
"AggName": "agg1",
"Field": "pid"
}
}]
}
Eliminar un índice de búsqueda
drop_search_index -n <indexName> -y
|
Parámetro |
Obligatorio |
Descripción |
|
-n, --name |
Sí |
Nombre del índice de búsqueda. |
|
-t, --table |
No |
Nombre de la tabla de datos. No es necesario si ya seleccionó una tabla de datos con el comando |
|
-y, --yes |
Sí |
Confirme la eliminación. Este parámetro es obligatorio en el comando. |
Ejemplos
Elimine el índice search_index.
drop_search_index -n search_index -y