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

Tablestore:サフィックスクエリ

最終更新日:May 07, 2026

サフィックスクエリ (SuffixQuery) は、多次元インデックス内で特定の文字列で終わるデータを検索します。たとえば、電話番号の下 4 桁を使用して荷物の配送状況を照会できます。

仕組み

サフィックスクエリを使用して、特定のサフィックスで終わるデータを検索します。SuffixQuery を実行するには、一致させるサフィックスを指定する必要があります。

サフィックスクエリをサポートするデータの型は FuzzyKeyword のみです。FuzzyKeyword データの型は、SuffixQueryPrefixQuerywildcard query などのあいまい検索操作に最適化されています。小規模、中規模、大規模なデータセットにおいても優れた安定したパフォーマンスを提供し、データ量が増加してもパフォーマンスが著しく低下することはありません。

説明
  • FuzzyKeyword 型のフィールドでは、ソートや集約はサポートされません。FuzzyKeyword フィールドに対してソートまたは集約を行う必要がある場合は、この目的のために Keyword 型の 仮想カラム を作成できます。

  • Keyword フィールドでサフィックスクエリをシミュレートするには、データ書き込み時に文字列を逆順にしてから、プレフィックスクエリ (PrefixQuery) を使用してデータを検索します。

API

Search 操作または ParallelScan 操作を呼び出してサフィックスクエリを実行します。クエリタイプを SuffixQuery に設定してください。

パラメーター

パラメーター

説明

query

クエリタイプを SuffixQuery に設定します。

fieldName

一致させるフィールドです。

suffix

サフィックスの値です。

getTotalCount

一致した行の総数を返すかどうかを指定します。デフォルト値は false です。

一致した行の総数を返すと、クエリのパフォーマンスに影響します。

weight

クエリの重みです。このパラメーターは、フルテキストインデックスのシナリオにおけるスコアベースのソートに使用されます。重みの値が高いほど、一致した行のスコアが高くなります。値は正の浮動小数点数である必要があります。

このパラメーターは返される結果のスコアにのみ影響し、結果の件数には影響しません。

tableName

データテーブルの名前です。

indexName

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

columnsToGet

返すカラムです。これには returnAll および columns の設定が含まれます。

デフォルトでは、returnAll は false です。returnAll が false の場合、columns を使用して返すカラムを指定できます。columns を指定しない場合、プライマリキー列のみが返されます。

returnAll を true に設定すると、すべてのカラムが返されます。

使用方法

Tablestore コンソールまたは SDK を使用してサフィックスクエリを実行できます。開始する前に、以下の前提条件を満たしてください。

Tablestore コンソールの使用

  1. インデックス管理 タブに移動します。

    1. Tablestore コンソール にログインします。

    2. 上部のナビゲーションバーで、リソースグループとリージョンを選択します。

    3. 概要 ページで、インスタンス名をクリックするか、操作 列の インスタンス管理 をクリックします。

    4. インスタンスの詳細 タブの データテーブル一覧 タブで、データテーブル名をクリックするか、操作列の インデックス管理 をクリックします。

  2. インデックス タブで、対象の多次元インデックスを見つけ、データの管理操作 列でクリックします。

    1. デフォルトでは、すべてのカラムが返されます。特定のカラムのみを返すには、すべてのカラムを取得 をオフにして、カラム名をカンマ区切りで入力します。

      説明

      デフォルトでは、Tablestore はデータテーブルのプライマリキー列を返します。

    2. 論理演算子を選択します:AndOr、または Not

      And を選択すると、指定されたすべての条件を満たすデータが返されます。Or を選択すると、指定された条件のいずれかを満たすデータが返されます。Not を選択すると、指定された条件を満たさないデータが返されます。

    3. FuzzyKeyword 型のインデックスフィールドを選択し、追加 をクリックします。

    4. インデックスフィールドのクエリタイプを サフィックスクエリ (SuffixQuery) に設定し、サフィックスの値を入力します。

    5. デフォルトでは、ソートは無効です。結果を特定のフィールドでソートするには、ソートを有効化 をオンにして、ソートフィールドを追加し、ソート順を設定します。

    6. デフォルトでは、集約は無効です。特定のフィールドに対して統計的集約を実行するには、集約を有効化 をオンにして、集約対象のフィールドを追加し、集約設定を構成します。

  3. OK をクリックします。

    クエリ結果は インデックス管理 タブに表示されます。

SDK の使用

Tablestore SDK for Java を使用してサフィックスクエリを実行できます。

重要
  • サフィックスクエリ機能は、Tablestore SDK for Java 5.17.0 以降でサポートされています。

  • SDK を使用してサフィックスクエリを実行する前に、クライアントを初期化する必要があります。詳細については、「Tablestore クライアントの初期化」をご参照ください。

次の例は、Col_FuzzyKeyword カラムの値が "hangzhou" で終わるデータをクエリする方法を示しています。

/**
 * Col_FuzzyKeyword カラムの値が "hangzhou" で終わるデータをクエリします。
 * @param client
 */
private static void suffixQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    SuffixQuery suffixQuery = new SuffixQuery(); // クエリタイプを SuffixQuery に設定します。
    searchQuery.setGetTotalCount(true);
    suffixQuery.setFieldName("Col_FuzzyKeyword");
    suffixQuery.setSuffix("hangzhou");
    searchQuery.setQuery(suffixQuery);
    //searchQuery.setGetTotalCount(true); // 一致した行の総数を返すには true に設定します。

    SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
    // columnsToGet パラメーターを設定して返すカラムを指定します。このパラメーターを設定しない場合、デフォルトでプライマリキー列のみが返されます。
    SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
    //columnsToGet.setReturnAll(true); // すべてのカラムを返すには true に設定します。
    columnsToGet.setColumns(Arrays.asList("Col_FuzzyKeyword")); // 指定したカラムを返すように設定します。
    searchRequest.setColumnsToGet(columnsToGet);

    SearchResponse resp = client.search(searchRequest);
    //System.out.println("TotalCount: " + resp.getTotalCount()); // 一致した行の総数(返された行数ではありません)を出力します。
    System.out.println("Row: " + resp.getRows());
}

課金

多次元インデックスを使用したデータのクエリは、読み取りスループットを消費します。詳細については、「多次元インデックスのメータリングと課金」をご参照ください。

よくある質問

関連トピック