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

Tablestore:プレフィックスクエリ

最終更新日:Jul 26, 2026

Tablestore SDK for Java のプレフィックスクエリは、指定された文字列で始まるフィールド値またはトークンに一致し、一致する行またはその合計数を返します。

前提条件

Tablestore SDK for Java をインストールし、クライアントを初期化します。

機能の説明

プレフィックスクエリは、指定されたフィールド内の、クエリ文字列で始まるフィールド値またはトークンに一致します。Keyword および FuzzyKeyword フィールド (「文字列型」をご参照ください) の場合、フィールド値全体がクエリ文字列で始まる必要があり、大文字と小文字が区別されます。Text フィールドの場合、アナライザーによって生成されたいずれかのトークンがクエリ文字列で始まっていれば、その行は一致すると見なされます。クエリ文字列自体はトークン化されません。

説明

大規模なデータセットの場合は、あいまいクエリに最適化された FuzzyKeyword 型を使用することを推奨します。Keyword フィールドに対するプレフィックスクエリのパフォーマンスは、インデックス付けされたデータが増加するにつれて低下するため、この型は小規模なデータセットにのみ使用してください。Text 型は互換性のためにサポートされています。トークン化により結果が設定に依存するため、完全な文字列の一致には不向きです。

search を呼び出すには、クエリタイプを PrefixQuery に設定し、SearchQuery を使用して、返される行数や合計数の追跡など、その他の一般的なクエリ動作を設定します。

SearchResponse search(SearchRequest request)

次の例では、category フィールドが FuzzyKeyword 型で、hang で始まる行をクエリします。このクエリでは、最大 10 行と、一致する行の合計数が返されます。

String tableName = "example_table";
String indexName = "example_index";

PrefixQuery prefixQuery = new PrefixQuery();
prefixQuery.setFieldName("category");
prefixQuery.setPrefix("hang");

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(prefixQuery);
searchQuery.setLimit(10);
searchQuery.setTrackTotalCount(SearchQuery.TRACK_TOTAL_COUNT);

SearchRequest request = new SearchRequest(tableName, indexName, searchQuery);
SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
columnsToGet.setReturnAll(true);
request.setColumnsToGet(columnsToGet);

SearchResponse response = client.search(request);
System.out.println(response.getTotalCount());
System.out.println(response.getRows());

パラメーター

検索リクエスト

request は、以下のパラメーターを含む SearchRequest オブジェクトです。

名前

説明

tableName (必須)

String

テーブル名。

indexName (必須)

String

検索インデックス名。

searchQuery (必須)

SearchQuery

クエリ条件と一般的なクエリ設定。

columnsToGet (任意)

SearchRequest.ColumnsToGet

返される列の設定。このパラメーターを省略した場合、プライマリキー列のみが返されます。

timeoutInMillisecond (任意)

int

リクエストレベルのクエリタイムアウト (ミリ秒単位) 。デフォルト値は -1 で、個別のクエリタイムアウトが設定されないことを意味します。

routingValues (任意)

List<PrimaryKey>

カスタムルーティングフィールドのプライマリキー値。インデックスがカスタムルーティングを使用しない場合は、このパラメーターを省略してください。

クエリ設定

request.searchQuery は、以下のパラメーターを含む SearchQuery オブジェクトです。

名前

説明

query (必須)

Query

クエリ条件。プレフィックスクエリの場合は、このパラメーターを PrefixQuery に設定します。

offset (任意)

Integer

クエリ結果のオフセット。

limit (任意)

Integer

返す行の最大数。行を返さないようにするには、このパラメーターを 0 に設定します。

highlight (任意)

Highlight

Text フィールドの概要およびハイライト設定。設定の詳細については、「概要とハイライト」をご参照ください。

collapse (任意)

Collapse

指定したフィールドで結果を重複排除するためのフィールド折りたたみ設定。設定の詳細については、「クエリ結果の折りたたみ」をご参照ください。

sort (任意)

Sort

結果のソート順。設定の詳細については、「結果のソートとページ分割」をご参照ください。

trackTotalCount (任意)

int

カウントする一致行の予想最大数。デフォルト値は TRACK_TOTAL_COUNT_DISABLED で、カウントを無効にします。すべての一致行をカウントするには、このパラメーターを TRACK_TOTAL_COUNT に設定します。値が小さいほど、クエリのパフォーマンスが向上します。

filter (任意)

SearchFilter

query の結果に適用されるフィルター。

aggregationList (任意)

List<Aggregation>

集計設定。設定の詳細については、「集計」をご参照ください。

groupByList (任意)

List<GroupBy>

グループ化設定。設定の詳細については、「集計」をご参照ください。

token (任意)

byte[]

ページネーショントークン。前のレスポンスの nextToken 値にこのパラメーターを設定して、行の読み取りを続行します。token を設定すると、トークンにはすでにソート条件が含まれているため、SDK は sort をクリアします。

クエリ条件

request.searchQuery.query は、以下のパラメーターを含む PrefixQuery オブジェクトです。

名前

説明

fieldName (必須)

String

クエリ対象のインデックス付きフィールド名。

prefix (必須)

String

クエリ文字列。Keyword または FuzzyKeyword フィールドの場合、フィールド値はこの文字列で始まる必要があります。Text フィールドの場合、少なくとも 1 つのトークンがこの文字列で始まる必要があります。クエリ文字列自体はトークン化されません。

weight (任意)

float

クエリ条件の関連度の重み。値は正の浮動小数点数である必要があります。値が大きいほど、クエリ条件が BM25 関連度スコアに大きく影響します。このパラメーターは、一致や返される行数には影響しません。ScoreSort を使用して関連度スコアでソートする場合にのみ、結果の順序に影響します。デフォルト値: 1.0

返される列

request.columnsToGet は、以下のパラメーターを含む SearchRequest.ColumnsToGet オブジェクトです。

名前

説明

columns (任意)

List<String>

取得する属性列。このパラメーターは、returnAllreturnAllFromIndex の両方が false の場合にのみ設定します。このパラメーターを省略した場合、プライマリキー列のみが返されます。

returnAll (任意)

boolean

テーブル内のすべての属性列を返すかどうかを指定します。デフォルト値: false

returnAllFromIndex (任意)

boolean

インデックス付けされたすべての属性列を返すかどうかを指定します。デフォルト値: false。このパラメーターと returnAll の両方を true にすることはできません。

戻り値

searchSearchResponse オブジェクトを返します。次の表に、主要なフィールドを示します。

名前

説明

totalCount

long

一致した行数。値を取得するには getTotalCount() を呼び出します。返される値は trackTotalCount の設定によって異なります。

rows

List<Row>

このクエリによって返された行。値を取得するには getRows() を呼び出します。行数は limit を超えません。

searchHits

List<SearchHit>

クエリのヒット。値を取得するには getSearchHits() を呼び出します。highlight が設定されている場合、このフィールドには行データと概要、ハイライトの結果が含まれます。

nextToken

byte[]

次ページのトークン。値を取得するには getNextToken() を呼び出します。値が null でない場合は、次のリクエストで token として設定し、行の読み取りを続行します。

isAllSuccess

boolean

すべてのインデックスパーティションが正常にクエリされたかどうかを示します。値を取得するには isAllSuccess() を呼び出します。値が false の場合、レスポンスには部分的な結果が含まれ、totalCount は実際の一致行数より少なくなる可能性があります。