全部產品
Search
文件中心

Tablestore:通過多元索引檢索 Lastpoint 資料

更新時間:Aug 04, 2026

使用 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(必選)

String

Lastpoint 索引名稱。建立多元索引時,將 Lastpoint 索引作為資料表使用。

indexName(必選)

String

多元索引名稱。

indexSchema(必選)

IndexSchema

多元索引 Schema,包括索引欄位、索引設定和預排序配置。

索引欄位

indexSchema.fieldSchemas[] 中每個元素的類型為 FieldSchema。以下參數用於配置樣本中的索引欄位。

名稱

類型

說明

fieldName(必選)

String

Lastpoint 索引中的欄位名稱。

fieldType(必選)

FieldType

多元索引欄位類型,必須與 Lastpoint 索引中的欄位實值型別匹配。

index(可選)

boolean

是否為欄位建立倒排索引或空間索引,預設值為 true

isArray(可選)

boolean

欄位是否為數組,預設值為 false。映射 _tags 時設定為 true

enableSortAndAgg(可選)

boolean

是否支援排序和統計彙總,預設值為 true。Text 欄位不支援排序和統計彙總。

檢索請求

SearchRequest 包含以下參數。

名稱

類型

說明

tableName(必選)

String

Lastpoint 索引名稱。

indexName(必選)

String

Lastpoint 索引上的多元索引名稱。

searchQuery(必選)

SearchQuery

查詢條件。樣本將 query 設定為 RangeQuery,並將 getTotalCount 設定為 true 以返回匹配總行數。支援的查詢類型及對應參數參見資料查詢

columnsToGet(可選)

SearchRequest.ColumnsToGet

要返回的列。不設定時僅返回主鍵列;樣本通過 returnAll 返回全部列。

傳回值

SearchResponse 包含以下業務返回欄位。

欄位

類型

說明

rows

List<Row>

通過 getRows() 擷取本次請求返回的 Lastpoint 資料。

totalCount

long

通過 getTotalCount() 擷取匹配條件的總行數。僅在 getTotalCount 設定為 true 時返回。

nextToken

byte[]

通過 getNextToken() 擷取下一次查詢的起始位置。返回空值表示沒有更多資料。

isAllSuccess

boolean

通過 isAllSuccess() 判斷查詢是否成功。