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

Tablestore:Wildcard query

最終更新日:Jul 27, 2026

Tablestore SDK for Java を使用したワイルドカード検索では、*? のパターンを使用して、KeywordText、または FuzzyKeyword フィールドのデータを照合します。

前提条件

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

機能の説明

ワイルドカード検索は、ワイルドカードを含むパターンに対してインデックスフィールドを照合します。その照合セマンティクスは SQL の LIKE に似ていますが、パターンではワイルドカードとして *? を使用します。Keyword または FuzzyKeyword フィールドの場合、パターンはフィールド値全体と照合されます。Text フィールドの場合、パターンはフィールド値から生成された各トークンと照合され、パターン自体はトークン化されません。サポートされているフィールドタイプの詳細については、「文字列型」をご参照ください。照合では大文字と小文字が区別されます。

パターンはワイルドカードで始めることができ、以下のワイルドカードをサポートしています:

  • * は、0 個以上の文字に一致します。

  • ? は、任意の 1 文字に一致します。

たとえば、table*etablestore に一致します。パターン hang*uhanguhangzhou に一致します。パターン hang?uhangxu には一致しますが、hangu には一致しません。

*word* パターン (SQL の WHERE field_a LIKE '%word%' に相当) のように、指定された文字列を含む値を照合するには、トークンベースのワイルドカード検索を使用します。このアプローチでは、データ量が増加してもクエリパフォーマンスは低下しません。

説明

パターンに一致するデータを除外するには、WildcardQuery オブジェクトを BoolQuery.mustNotQueries に追加します。この構成は、SQL の NOT LIKE 演算子に相当します。BoolQuery の構成については、「ブールクエリ」をご参照ください。

search を呼び出す際に、クエリタイプを WildcardQuery に設定します。SearchQuery を使用して、結果の上限、合計数の追跡、およびその他の一般的なクエリ設定を構成します。

SearchResponse search(SearchRequest request)

次の例では、product_name フィールド内の Keyword 値のうち、table*e パターンに一致するものをクエリします。このクエリは最大 10 行と一致した合計数を返します。

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

WildcardQuery wildcardQuery = new WildcardQuery();
wildcardQuery.setFieldName("product_name");
wildcardQuery.setValue("table*e");

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(wildcardQuery);
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

クエリ条件。ワイルドカード検索の場合、このパラメーターを WildcardQuery オブジェクトに設定します。

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 は、以下のパラメーターを含む WildcardQuery オブジェクトです。

名前

タイプ

説明

fieldName (必須)

String

クエリ対象の KeywordText、または FuzzyKeyword フィールドの名前。

value (必須)

String

ワイルドカードを含むクエリパターン。最大長は 32 文字で、照合では大文字と小文字が区別されます。Keyword または FuzzyKeyword フィールドの場合、パターンはフィールド値全体と照合されます。Text フィールドの場合、パターンは各トークンと照合され、パターン自体はトークン化されません。

weight (オプション)

float

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

返される列

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

名前

タイプ

説明

columns (オプション)

List<String>

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

returnAll (オプション)

boolean

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

returnAllFromIndex (オプション)

boolean

インデックス付けされたすべての属性列を返すかどうかを指定します。デフォルト値は false です。returnAllreturnAllFromIndex の両方を 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 は実際の一致行数より少なくなる可能性があります。