Utilice Tablestore SDK for Java para crear un índice de búsqueda en un índice Lastpoint y consultar los datos más recientes de cada serie temporal según las condiciones de los campos de datos.
Requisitos previos
Instale Tablestore SDK for Java e inicialice un cliente. Los índices Lastpoint requieren la versión 5.17.1 o posterior. Se recomienda utilizar la versión más reciente.
Descripción
Las lecturas directas desde un índice Lastpoint localizan los datos por rango de clave primaria. Para filtrar los datos más recientes por campos de datos mediante consultas booleanas, búsqueda de texto completo, consultas geográficas o agregaciones, cree un índice de búsqueda en el índice Lastpoint y llame a search. Para obtener más información sobre las capacidades de consulta, consulte Search indexes.
public CreateSearchIndexResponse createSearchIndex(CreateSearchIndexRequest request) throws TableStoreException, ClientException
public SearchResponse search(SearchRequest request) throws TableStoreException, ClientException
Creación de un índice de búsqueda
Solo se pueden consultar los campos incluidos en el esquema del índice de búsqueda. El campo _tags de un índice Lastpoint es una matriz de cadenas y debe asignarse como una matriz de Keyword. Asigne los demás campos de datos a sus tipos correspondientes.
El siguiente ejemplo crea example_search_index en example_lastpoint_index e indexa los campos tags, speed y status.
List<FieldSchema> fieldSchemas = Arrays.asList(
new FieldSchema("_tags", FieldType.KEYWORD)
.setIndex(true).setIsArray(true),
new FieldSchema("speed", FieldType.DOUBLE)
.setIndex(true).setEnableSortAndAgg(true),
new FieldSchema("status", FieldType.KEYWORD)
.setIndex(true).setEnableSortAndAgg(true));
IndexSchema indexSchema = new IndexSchema();
indexSchema.setFieldSchemas(fieldSchemas);
CreateSearchIndexRequest request = new CreateSearchIndexRequest();
request.setTableName("example_lastpoint_index");
request.setIndexName("example_search_index");
request.setIndexSchema(indexSchema);
client.createSearchIndex(request);
Consulta de los datos más recientes
La creación de un índice de búsqueda es asíncrona. Ejecute las consultas después de que el estado del índice cambie a RUNNING y la fase de sincronización de datos cambie a INCR.
El siguiente ejemplo utiliza una consulta de rango para recuperar filas Lastpoint en las que speed es mayor que 20.0. La consulta devuelve el número total de filas coincidentes y todas las columnas.
RangeQuery rangeQuery = new RangeQuery();
rangeQuery.setFieldName("speed");
rangeQuery.greaterThan(ColumnValue.fromDouble(20.0));
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(rangeQuery);
searchQuery.setGetTotalCount(true);
SearchRequest request = new SearchRequest(
"example_lastpoint_index",
"example_search_index",
searchQuery);
SearchRequest.ColumnsToGet columnsToGet =
new SearchRequest.ColumnsToGet();
columnsToGet.setReturnAll(true);
request.setColumnsToGet(columnsToGet);
SearchResponse response = client.search(request);
System.out.println(response.getTotalCount());
response.getRows().forEach(System.out::println);
Parámetros
Solicitud de creación de índice de búsqueda
CreateSearchIndexRequest contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
tableName (obligatorio) |
|
Nombre del índice Lastpoint. Un índice Lastpoint se utiliza como tabla de datos al crear un índice de búsqueda. |
|
indexName (obligatorio) |
|
Nombre del índice de búsqueda. |
|
indexSchema (obligatorio) |
|
Esquema del índice de búsqueda, que incluye esquemas de campos, configuración del índice y ajustes de preordenamiento. |
Campos del índice
Cada elemento en indexSchema.fieldSchemas[] es del tipo FieldSchema. Los siguientes parámetros configuran los campos del ejemplo.
|
Nombre |
Tipo |
Descripción |
|
fieldName (obligatorio) |
|
Nombre del campo en el índice Lastpoint. |
|
fieldType (obligatorio) |
|
Tipo de campo del índice de búsqueda. El tipo debe coincidir con el tipo de valor en el índice Lastpoint. |
|
index (opcional) |
|
Especifica si se debe indexar el campo. Valor predeterminado: |
|
isArray (opcional) |
|
Especifica si el campo es una matriz. Valor predeterminado: |
|
enableSortAndAgg (opcional) |
|
Especifica si están habilitadas la ordenación y las agregaciones. Valor predeterminado: |
Solicitud de búsqueda
SearchRequest contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
tableName (obligatorio) |
|
Nombre del índice Lastpoint. |
|
indexName (obligatorio) |
|
Nombre del índice de búsqueda en el índice Lastpoint. |
|
searchQuery (obligatorio) |
|
Configuración de la consulta. El ejemplo establece |
|
columnsToGet (opcional) |
|
Columnas que se devolverán. Si no se especifica este parámetro, solo se devuelven las columnas de clave primaria. El ejemplo utiliza |
Respuesta
SearchResponse contiene los siguientes campos específicos de la operación.
|
Campo |
Tipo |
Descripción |
|
|
|
Llame a |
|
|
|
Llame a |
|
|
|
Llame a |
|
|
|
Llame a |