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

Tablestore:用語クエリ

最終更新日:Dec 28, 2024

用語クエリを使用して、フィールドの指定された値と完全に一致するデータをクエリできます。用語クエリは、文字列一致条件に基づくクエリに似ています。列のタイプが TEXT の場合、Tablestore は文字列をトークン化し、トークンを使用してキーワードを照合します。行内のトークンの少なくとも 1 つがキーワードと完全に一致する場合、行はクエリ条件を満たします。列の値の照合に使用されるキーワードはトークン化されません。

API オペレーション

Search または ParallelScan オペレーションを呼び出し、クエリタイプを TermQuery に設定して、用語クエリを実行できます。

パラメータ

パラメータ

説明

query

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

fieldName

クエリする列の名前。

term

用語クエリを実行するときに、列の値の照合に使用されるキーワード。この単語はトークン化されません。代わりに、単語全体が列値の照合に使用されます。

列のタイプが TEXT の場合、Tablestore は文字列をトークン化し、トークンを使用してキーワードを照合します。行内のトークンの少なくとも 1 つがキーワードと完全に一致する場合、行はクエリ条件を満たします。たとえば、行の TEXT タイプの列の値が "tablestore is cool" の場合、値は "tablestore"、"is"、および "cool" にトークン化できます。列の値を照合するキーワードとして "tablestore"、"is"、または "cool" を指定すると、行はクエリ条件を満たします。

getTotalCount

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

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

weight

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

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

tableName

データテーブルの名前。

indexName

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

columnsToGet

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

returnAll フィールドのデフォルト値は false で、すべての列が返されるわけではないことを示します。この場合、columns フィールドを使用して、返す列を指定できます。返す列を指定しない場合は、主キー列のみが返されます。

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

メソッド

Tablestore コンソール、Tablestore CLI、または Tablestore SDK を使用して、一致クエリを実行できます。完全一致クエリを実行する前に、次の準備が整っていることを確認してください。

Tablestore コンソールの使用

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

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

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

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

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

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

  3. 検索 ダイアログボックスで、クエリパラメータを構成します。

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

      説明

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

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

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

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

    4. クエリタイプ ドロップダウンリストから TermQuery (TermQuery) を選択し、フィールド値を指定します。

    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": "TermQuery",
            "Query": {
                "FieldName": "col_keyword",
                "Term": "hangzhou"
            }
        }
    }

Tablestore SDK の使用

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」と完全に一致する行をクエリする方法の例を示しています。

/**
 * テーブル内の Col_Keyword 列の値が「hangzhou」と完全に一致する行をクエリします。
 * @param client
 */
private static void termQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    TermQuery termQuery = new TermQuery(); // クエリタイプを TermQuery に設定します。
    termQuery.setFieldName("Col_Keyword"); // 一致させるフィールドの名前を設定します。
    termQuery.setTerm(ColumnValue.fromString("hangzhou")); // 一致させる値を設定します。
    searchQuery.setQuery(termQuery);
    //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); // すべての列を返すように指定します。
    //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

参考資料