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

Tablestore:用語クエリ

最終更新日:May 07, 2026

複数値完全一致検索は、完全一致検索と似ています。複数値完全一致検索では複数のキーワードを指定できます。列の値がいずれか 1 つのキーワードに一致する場合、そのデータ行が返されます。複数値完全一致検索は、SQL ステートメントにおける IN 演算子と同様に使用できます。

API オペレーション

Search オペレーションまたは ParallelScan オペレーションを呼び出し、クエリタイプを TermsQuery に設定することで、複数値完全一致検索を実行できます。

パラメーター

パラメーター

説明

query

クエリのタイプです。このパラメーターを TermsQuery に設定します。

fieldName

一致させたいフィールドの名前です。

terms

一致させる検索語です。最大 1,024 個の語を指定できます。

列の値がいずれか 1 つのキーワードに一致する場合、そのデータ行が返されます。

getTotalCount

クエリ条件を満たす行の総数を返すかどうかを指定します。デフォルト値は false で、クエリ条件を満たす行の総数は返されません。

このパラメーターを true に設定すると、クエリのパフォーマンスが低下します。

weight

BM25 ベースのキーワード関連性スコアを計算するために、クエリ対象フィールドに割り当てる重みです。このパラメーターは全文検索のシナリオで使用されます。クエリ対象フィールドに高い重みを指定すると、そのフィールドの BM25 ベースのキーワード関連性スコアが高くなります。このパラメーターの値は正の浮動小数点数です。

このパラメーターは返される行数には影響しませんが、クエリ結果の BM25 ベースのキーワード関連性スコアには影響します。

tableName

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

indexName

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

columnsToGet

クエリ条件を満たす各行のすべての列を返すかどうかを指定します。このパラメーターでは returnAll フィールドと columns フィールドを指定できます。

returnAll フィールドのデフォルト値は false で、すべての列が返されないことを意味します。この場合、columns フィールドを使用して返したい列を指定できます。返したい列を指定しない場合は、プライマリキー列のみが返されます。

returnAll フィールドを true に設定すると、すべての列が返されます。

方法

Tablestore コンソール、Tablestore CLI、または Tablestore SDK を使用して複数値完全一致検索を実行できます。複数値完全一致検索を実行する前に、以下の事前準備を完了させてください。

  • Tablestore の操作権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーを用意します。RAM ユーザーに Tablestore の操作権限を付与する方法については、「RAM ポリシーを使用して RAM ユーザーに権限を付与する」をご参照ください。

    Tablestore SDK または Tablestore CLI を使用してクエリを実行する場合は、ご利用の Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ペアを作成してください。詳細については、「AccessKey ペアの作成」をご参照ください。

  • データテーブルを作成します。詳細については、「テーブルの操作」をご参照ください。

  • データテーブルに対して多次元インデックスを作成します。詳細については、「多次元インデックスの作成」をご参照ください。

  • Tablestore SDK を使用してクエリを実行する場合は、OTSClient インスタンスを初期化します。詳細については、「OTSClient インスタンスの初期化」をご参照ください。

  • Tablestore CLI を使用してクエリを実行する場合は、Tablestore CLI をダウンロードして起動し、アクセスするインスタンスの情報を設定します。詳細については、「Tablestore CLI のダウンロード」および「Tablestore CLI の起動とアクセス情報の設定」をご参照ください。

Tablestore コンソールの使用

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

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

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

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

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

  2. [インデックス管理] タブで、対象の検索インデックスを見つけ、[操作] 列の [検索] をクリックします。

  3. 検索 ダイアログボックスで、クエリ条件を指定します。

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

      説明

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

    2. 論理演算子を選択します: [かつ][または]、または[ではない]

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

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

    4. インデックスフィールドのクエリタイプを 複数値完全一致検索 (TermsQuery) に設定し、値を入力してから [追加] をクリックします。

      複数の値を追加する場合は、 を入力して [追加] をクリックする操作を繰り返します。

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

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

  4. [OK] をクリックします。

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

Tablestore CLI の使用

Tablestore CLI で search コマンドを実行して、検索インデックスを使用してデータのクエリを行うことができます。詳細については、「検索インデックス」をご参照ください。

  1. search コマンドを実行して、search_index 検索インデックスを使用し、クエリ条件を満たす各行のすべてのインデックス付きカラムを返します。

    search -n search_index --return_all_indexed
  2. システムのプロンプトに従ってクエリ条件を入力します。

    {
        "Offset": -1,
        "Limit": 10,
        "Collapse": null,
        "Sort": null,
        "GetTotalCount": true,
        "Token": null,
        "Query": {
            "Name": "TermsQuery",
            "Query": {
                "FieldName": "col_keyword",
                "Terms": ["hangzhou", "xi'an"]
            }
        }
    }

Tablestore SDK の使用

以下の Tablestore SDK を使用して複数値完全一致検索を実行できます:Tablestore SDK for JavaTablestore SDK for GoTablestore SDK for PythonTablestore SDK for Node.jsTablestore SDK for .NET、および Tablestore SDK for PHP。ここでは、Tablestore SDK for Java を使用した例を示します。

次のサンプルコードは、Col_Keyword 列の値が "hangzhou" または "xi'an" である行をクエリする方法の例です。

/**
 * Col_Keyword の値が "hangzhou" または "xi'an" である行をテーブルから検索します。
 * @param client
 */
private static void termQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    TermsQuery termsQuery = new TermsQuery(); // クエリタイプを TermsQuery に設定します。
    termsQuery.setFieldName("Col_Keyword"); // 一致させたい列の名前を指定します。
    termsQuery.addTerm(ColumnValue.fromString("hangzhou")); // 一致させたいキーワードを指定します。
    termsQuery.addTerm(ColumnValue.fromString("xi'an")); // 一致させたいキーワードを指定します。
    searchQuery.setQuery(termsQuery);
    //searchQuery.setGetTotalCount(true); // GetTotalCount パラメーターを true に設定して、クエリ条件を満たす行の総数を返します。

    SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
    // columnsToGet パラメーターを使用して返したい列を指定するか、すべての列を返すように指定できます。このパラメーターを指定しない場合は、プライマリキー列のみが返されます。
    //SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
    //columnsToGet.setReturnAll(true); // ReturnAll パラメーターを true に設定して、すべての列を返します。
    //columnsToGet.setColumns(Arrays.asList("ColName1","ColName2")); // 返したい列を指定します。
    //searchRequest.setColumnsToGet(columnsToGet);

    SearchResponse resp = client.search(searchRequest);
    //System.out.println("TotalCount: " + resp.getTotalCount()); // 返された行数ではなく、クエリ条件を満たす行の総数を表示します。
    System.out.println("Row: " + resp.getRows());
}

課金

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

よくある質問

関連ドキュメント