Use o Tablestore SDK for Java para crie um índice de busca em um índice Lastpoint e consultar os dados mais recentes de cada série temporal com base em condições de campos de dados.
Pré-requisitos
Instale o Tablestore SDK for Java e inicialize um cliente. Os índices Lastpoint exigem a versão 5.17.1 ou posterior. Recomendamos usar a versão mais recente.
Descrição
Leituras diretas em um índice Lastpoint localizam dados por intervalo de chave primária. Para filtrar os dados mais recentes por campos de dados com consultas booleanas, busca de texto completo, consultas geoespaciais ou agregações, crie um índice de busca no índice Lastpoint e chame search. Para obter mais informações sobre os recursos de consulta, consulte Search indexes.
public CreateSearchIndexResponse createSearchIndex(CreateSearchIndexRequest request) throws TableStoreException, ClientException
public SearchResponse search(SearchRequest request) throws TableStoreException, ClientException
Criar um índice de busca
Somente é possível consultar campos incluídos no esquema do índice de busca. O campo _tags de um índice Lastpoint é um array de strings e deve ser mapeado como um array Keyword. Mapeie os demais campos de dados para seus tipos correspondentes.
O exemplo a seguir cria example_search_index em example_lastpoint_index e indexa os campos tags, speed e 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);
Consultar os dados mais recentes
A criação do índice de busca é assíncrona. Execute as consultas após o status do índice mudar para RUNNING e a fase de sincronização de dados mudar para INCR.
O exemplo a seguir usa uma consulta de intervalo para recuperar linhas Lastpoint nas quais speed é maior que 20.0. A consulta retorna o número total de linhas correspondentes e todas as colunas.
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
Solicitação de criação de índice de busca
CreateSearchIndexRequest contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
tableName (obrigatório) |
|
Nome do índice Lastpoint. O índice Lastpoint funciona como tabela de dados durante a criação do índice de busca. |
|
indexName (obrigatório) |
|
Nome do índice de busca. |
|
indexSchema (obrigatório) |
|
Esquema do índice de busca, incluindo esquemas de campos, configurações de índice e configurações de pré-ordenação. |
Campos do índice
Cada elemento em indexSchema.fieldSchemas[] é do tipo FieldSchema. Os parâmetros a seguir configure os campos do exemplo.
|
Nome |
Tipo |
Descrição |
|
fieldName (obrigatório) |
|
Nome do campo no índice Lastpoint. |
|
fieldType (obrigatório) |
|
Tipo de campo do índice de busca. O tipo deve corresponder ao tipo de valor no índice Lastpoint. |
|
index (opcional) |
|
Define se o campo será indexado. Valor padrão: |
|
isArray (opcional) |
|
Indica se o campo é um array. Valor padrão: |
|
enableSortAndAgg (opcional) |
|
Especifica se a ordenação e as agregações estão ativadas. Valor padrão: |
Solicitação de busca
SearchRequest contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
tableName (obrigatório) |
|
Nome do índice Lastpoint. |
|
indexName (obrigatório) |
|
Nome do índice de busca no índice Lastpoint. |
|
searchQuery (obrigatório) |
|
Configuração da consulta. O exemplo define |
|
columnsToGet (opcional) |
|
Colunas a retornar. Se este parâmetro não for especificado, apenas as colunas de chave primária serão retornadas. O exemplo usa |
Resposta
SearchResponse contém os seguintes campos específicos da operação.
|
Campo |
Tipo |
Descrição |
|
|
|
Chame |
|
|
|
Chame |
|
|
|
Chame |
|
|
|
Chame |