使用 Java SDK 為 Lastpoint 索引建立多元索引,並按資料欄位條件檢索每條時間軸的最新資料。
前提條件
安裝Tablestore Java SDK並初始化用戶端。Lastpoint 索引需要使用 5.17.1 及以上版本,建議使用最新版本。
功能說明
直接讀取 Lastpoint 索引時,需要按主鍵範圍定位元據。如果需要按資料欄位自由組合查詢、全文檢索索引、地理位置或彙總條件式篩選最新資料,可以先為 Lastpoint 索引建立多元索引,再調用 search 方法檢索。多元索引的查詢能力參見多元索引。
public CreateSearchIndexResponse createSearchIndex(CreateSearchIndexRequest request) throws TableStoreException, ClientException
public SearchResponse search(SearchRequest request) throws TableStoreException, ClientException
建立多元索引
僅多元索引 Schema 中配置的欄位支援檢索。Lastpoint 索引的 _tags 欄位是字串數組,需要映射為 Keyword 數組;其他資料欄位按實際類型映射。
以下樣本為 example_lastpoint_index 建立 example_search_index,並索引標籤、速度和狀態欄位。
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);
檢索最新資料
建立多元索引是非同步作業。多元索引狀態變為 RUNNING 且資料同步階段變為 INCR 後,再執行查詢。
以下樣本使用範圍查詢檢索 speed 大於 20.0 的 Lastpoint 資料,並返回匹配總行數和全部列。
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);
參數說明
建立多元索引請求
CreateSearchIndexRequest 包含以下參數。
|
名稱 |
類型 |
說明 |
|
tableName(必選) |
|
Lastpoint 索引名稱。建立多元索引時,將 Lastpoint 索引作為資料表使用。 |
|
indexName(必選) |
|
多元索引名稱。 |
|
indexSchema(必選) |
|
多元索引 Schema,包括索引欄位、索引設定和預排序配置。 |
索引欄位
indexSchema.fieldSchemas[] 中每個元素的類型為 FieldSchema。以下參數用於配置樣本中的索引欄位。
|
名稱 |
類型 |
說明 |
|
fieldName(必選) |
|
Lastpoint 索引中的欄位名稱。 |
|
fieldType(必選) |
|
多元索引欄位類型,必須與 Lastpoint 索引中的欄位實值型別匹配。 |
|
index(可選) |
|
是否為欄位建立倒排索引或空間索引,預設值為 |
|
isArray(可選) |
|
欄位是否為數組,預設值為 |
|
enableSortAndAgg(可選) |
|
是否支援排序和統計彙總,預設值為 |
檢索請求
SearchRequest 包含以下參數。
|
名稱 |
類型 |
說明 |
|
tableName(必選) |
|
Lastpoint 索引名稱。 |
|
indexName(必選) |
|
Lastpoint 索引上的多元索引名稱。 |
|
searchQuery(必選) |
|
查詢條件。樣本將 |
|
columnsToGet(可選) |
|
要返回的列。不設定時僅返回主鍵列;樣本通過 |
傳回值
SearchResponse 包含以下業務返回欄位。
|
欄位 |
類型 |
說明 |
|
|
|
通過 |
|
|
|
通過 |
|
|
|
通過 |
|
|
|
通過 |