すべてのプロダクト
Search
ドキュメントセンター

Tablestore:検索インデックスを使用した Lastpoint データのクエリ

最終更新日:Aug 04, 2026

Tablestore SDK for Java を使用して Lastpoint インデックスに検索インデックスを作成し、データフィールドの条件に基づいて各時系列の最新データをクエリします。

前提条件

Tablestore SDK for Java をインストールし、クライアントを初期化します。Lastpoint インデックスにはバージョン 5.17.1 以降が必要です。最新バージョンの使用を推奨します。

説明

Lastpoint インデックスからのダイレクトリードは、プライマリキーの範囲によってデータを特定します。ブールクエリ、全文検索、ジオクエリ、または集計を使用してデータフィールドで最新データをフィルタリングするには、Lastpoint インデックスに検索インデックスを作成し、search を呼び出します。クエリ機能の詳細については、「検索インデックス」をご参照ください。

public CreateSearchIndexResponse createSearchIndex(CreateSearchIndexRequest request) throws TableStoreException, ClientException
public SearchResponse search(SearchRequest request) throws TableStoreException, ClientException

検索インデックスの作成

検索できるのは、検索インデックススキーマに含まれるフィールドのみです。Lastpoint インデックスの _tags フィールドは文字列配列であり、キーワード配列としてマッピングする必要があります。その他のデータフィールドは、対応する型にマッピングします。

次の例では、example_lastpoint_index に example_search_index を作成し、_tags、speed、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);

最新データのクエリ

検索インデックスの作成は非同期です。インデックスステータスが 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 (required)

String

Lastpoint インデックス名。検索インデックスを作成する際、Lastpoint インデックスはデータテーブルとして使用されます。

indexName (required)

String

検索インデックス名。

indexSchema (required)

IndexSchema

フィールドスキーマ、インデックス設定、事前ソート設定を含む検索インデックススキーマ。

インデックスフィールド

indexSchema.fieldSchemas[] の各要素は FieldSchema 型です。例のフィールドは、次のパラメーターで設定します。

名前

型

説明

fieldName (required)

String

Lastpoint インデックス内のフィールド名。

fieldType (required)

FieldType

検索インデックスのフィールド型。この型は、Lastpoint インデックス内の値の型と一致している必要があります。

index (optional)

boolean

フィールドをインデックス化するかどうかを指定します。デフォルト値: true。

isArray (optional)

boolean

フィールドが配列かどうかを指定します。デフォルト値: false。 _tags には、このパラメーターを true に設定します。

enableSortAndAgg (optional)

boolean

ソートと集計を有効にするかどうかを指定します。デフォルト値: false。テキストフィールドはソートまたは集計をサポートしていません。

検索リクエスト

SearchRequest には、次のパラメーターが含まれます。

名前

型

説明

tableName (required)

String

Lastpoint インデックス名。

indexName (required)

String

Lastpoint インデックスの検索インデックス名。

searchQuery (required)

SearchQuery

クエリ設定。例では query に RangeQuery を設定し、 getTotalCount を true に設定して、一致する行の総数を返すようにします。サポートされるクエリタイプとパラメーターについては、「データクエリ」をご参照ください。

columnsToGet (optional)

SearchRequest.ColumnsToGet

取得する列。指定しない場合、プライマリキー列のみが返されます。例では returnAll を使用して、すべての列を返します。

レスポンス

SearchResponse には、次の操作固有フィールドが含まれます。

フィールド

型

説明

rows

List<Row>

getRows() を呼び出して、返された Lastpoint の行を取得します。

totalCount

long

getTotalCount() を呼び出して、一致する行の総数を取得します。このフィールドは、 getTotalCount が true の場合にのみ返されます。

nextToken

byte[]

getNextToken() を呼び出して、次のクエリの開始位置を取得します。空の値は、これ以上データがないことを示します。

isAllSuccess

boolean

isAllSuccess() を呼び出して、クエリが成功したかどうかを確認します。