全部产品
Search
文档中心

表格存储:通过多元索引检索 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() 判断查询是否成功。