複数値完全一致検索は、フィールドの値が複数の指定キーワードのいずれかと完全に一致する行を取得します。これは SQL の IN 演算子に相当し、単一キーワードの完全一致検索(term query)を複数キーワードに対応するように拡張したものです。
前提条件
-
OTSClient インスタンスが初期化済みです。詳細については、「OTSClient インスタンスの初期化」をご参照ください。
-
データテーブルが作成され、データが書き込まれています。詳細については、「データテーブルの作成」および「データの書き込み」をご参照ください。
-
データテーブルに対して検索インデックスが作成されます。詳細については、「検索インデックスを作成する」をご参照ください。
パラメーター
|
パラメーター |
説明 |
|
TableName |
データテーブルの名前です。 |
|
IndexName |
検索インデックスの名前。 |
|
Query |
クエリの種類です。 |
|
FieldName |
照合対象のフィールド名です。 |
|
Terms |
フィールド値と照合するキーワードのリストです。行のフィールド値が少なくとも 1 つのキーワードと完全に一致する場合、その行が返されます。 |
|
Limit |
返される行の最大数です。
|
|
ColumnsToGet |
一致する各行で返すカラムを指定します。 デフォルトでは、
|
使用例
次の例では、Col_Keyword の値が "SearchIndex" または "Sample" と完全に一致する行をクエリします。
/// <summary>
/// Col_Keyword 列の値が "SearchIndex" または "Sample" と完全に一致する行をテーブル内から検索します。
/// </summary>
/// <param name="otsClient"></param>
public static void TermsQuery(OTSClient otsClient)
{
TermsQuery termsQuery = new TermsQuery();
termsQuery.FieldName = "Col_Keyword";
termsQuery.Terms = new List<ColumnValue>
{
new ColumnValue("SearchIndex"),
new ColumnValue("Sample")
};
SearchQuery searchQuery = new SearchQuery();
searchQuery.Query = termsQuery;
SearchRequest searchRequest = new SearchRequest(TableName, IndexName, searchQuery);
// 返却カラムを指定します:多次元インデックスに基づく、カラム名による指定、または全カラム。
// 指定しない場合、プライマリキー列のみが返されます。
searchRequest.ColumnsToGet = new ColumnsToGet
{
// 多次元インデックス内のすべてのカラムを返します。
ReturnAllFromIndex = true
// カラム名を指定して特定のカラムを返します。
//Columns = new List<string>() { Long_type_col, Text_type_col, Keyword_type_col }
// データテーブル内のすべてのカラムを返します。
//ReturnAll = true
};
SearchResponse searchResponse = otsClient.Search(searchRequest);
Console.WriteLine(JsonConvert.SerializeObject(searchResponse));
}
よくある質問
参考資料
多次元インデックスを使用してデータをクエリする際には、以下のクエリ方法を利用できます:完全一致検索、複数値完全一致検索、完全一致検索、一致検索、フレーズ一致検索、プレフィックス検索、範囲クエリ、ワイルドカード検索、ブール値クエリ、ジオクエリ、ネストされたクエリ、および 存在クエリ。ビジネス要件に応じて、さまざまなクエリ方法を組み合わせて多角的にデータをクエリできます。
ソートおよびページング機能を使用して、クエリ条件を満たす行をソートまたはページ分割できます。詳細については、「ソートとページング」をご参照ください。
折りたたみ(distinct)機能を使用して、特定のカラムに基づいて結果セットを折りたたむことができます。これにより、指定されたタイプのデータがクエリ結果に 1 回のみ表示されます。詳細については、「折りたたみ(distinct)」をご参照ください。
データテーブル内のデータを分析したい場合は、Search 操作の集約機能または SQL ステートメントを実行できます。たとえば、最小値、最大値、合計値、行の総数を取得できます。詳細については、「集約」および「SQL クエリ」をご参照ください。
クエリ条件を満たすすべての行を取得する必要があり、かつ行のソートが不要な場合は、ParallelScan 操作および ComputeSplits 操作を呼び出して並列スキャン機能を使用できます。詳細については、「並列スキャン」をご参照ください。