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

Tablestore:Terms query

最終更新日:Dec 28, 2024

Terms クエリは Term クエリに似ています。Terms クエリは複数のキーワードをサポートしています。列の値が少なくとも 1 つのキーワードと一致する場合、データ行が返されます。Terms クエリは、SQL ステートメントの IN 演算子と同じ方法で使用できます。

API 操作

Search または ParallelScan 操作を呼び出し、クエリタイプを TermsQuery に設定して、Terms クエリを実行できます。

パラメーター

パラメーター

説明

query

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

fieldName

一致させるフィールドの名前。

terms

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 を使用して、Terms クエリを実行できます。Terms クエリを実行する前に、以下の準備が整っていることを確認してください。

Tablestore コンソールの使用

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

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

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

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

    4. テーブルタブのインスタンスの詳細タブで、データテーブルの名前をクリックするか、データテーブルの[アクション] 列のインデックスをクリックします。

  2. インデックスタブで、データのクエリに使用する検索インデックスを見つけ、アクション列の データの管理をクリックします。

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

    1. デフォルトでは、システムはすべての属性列を返します。特定の属性列を返すには、すべての列をオフにして、返す属性列を指定します。複数の属性列はコンマ (,) で区切ります。

      説明

      デフォルトでは、システムはデータテーブルのすべての主キー列を返します。

    2. ビジネス要件に基づいて、AndOr、または Not 論理演算子を選択します。

      And 論理演算子を選択すると、クエリ条件を満たすデータが返されます。Or 演算子を選択して単一のクエリ条件を指定すると、そのクエリ条件を満たすデータが返されます。Or 論理演算子を選択して複数のクエリ条件を指定すると、いずれかのクエリ条件を満たすデータが返されます。Not 論理演算子を選択すると、クエリ条件を満たさないデータが返されます。

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

    4. クエリタイプパラメーターを TermsQuery(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", // クエリタイプを TermsQuery に設定します。
            "Query": {
                "FieldName": "col_keyword", // 一致させる列の名前を指定します。
                "Terms": ["hangzhou", "xi'an"] // 一致させるキーワードを指定します。
            }
        }
    }

Tablestore SDK の使用

次の Tablestore SDK を使用して Terms クエリを実行できます。Tablestore SDK for JavaTablestore SDK for GoTablestore SDK for PythonTablestore SDK for Node.jsTablestore SDK for .NETTablestore 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());
}

課金ルール

検索インデックスを使用してデータをクエリする場合、消費された読み取りスループットに対して課金されます。詳細については、検索インデックスの課金対象項目 を参照してください。

FAQ

参考資料

  • 検索インデックスを使用してデータをクエリする場合、次のクエリメソッドを使用できます。Term クエリTerms クエリMatch All クエリMatch クエリMatch Phrase クエリPrefix クエリRange クエリWildcard クエリFuzzy クエリBoolean クエリGeo クエリNested クエリKNN ベクタークエリExists クエリ。ビジネス要件に基づいてクエリメソッドを選択し、複数のディメンションからデータをクエリできます。

    並べ替え機能とページング機能を使用して、クエリ条件を満たす行を並べ替えたりページネーションしたりできます。詳細については、並べ替えとページングの実行 を参照してください。

    Collapse (個別) 機能を使用して、特定の列に基づいて結果セットを折り畳むことができます。これにより、指定されたタイプのデータはクエリ結果に 1 回だけ表示されます。詳細については、Collapse (個別) を参照してください。

  • データテーブルのデータを分析する場合は、Search 操作の集計機能を使用するか、SQL ステートメントを実行できます。たとえば、最小値、最大値、合計、行の総数などを取得できます。詳細については、集計 および SQL クエリ を参照してください。

  • 行を並べ替えることなく、クエリ条件を満たすすべての行を取得する場合は、ParallelScan 操作と ComputeSplits 操作を呼び出して、並列スキャン機能を使用できます。詳細については、並列スキャン を参照してください。