タームクエリを使用すると、特定のフィールドの値が指定したキーワードと完全に一致する行をクエリできます。タームクエリは、文字列一致条件に基づくクエリに似ています。 TEXT フィールドを使用してキーワードを照合する場合、行内のトークンの少なくとも 1 つがキーワードと完全に一致すると、その行はクエリ条件を満たします。キーワードはトークン化されません。
前提条件
OTSClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスの初期化を参照してください。
データテーブルが作成され、データがデータテーブルに書き込まれていること。詳細については、データテーブルの作成とデータの書き込みを参照してください。
データテーブルの検索インデックスが作成されていること。詳細については、検索インデックスの作成を参照してください。
パラメーター
パラメーター | 説明 |
FieldName | 照合するフィールドの名前。 |
Term | タームクエリを実行するときにフィールドの値と照合するために使用されるキーワード。 この単語はトークン化されません。代わりに、単語全体がフィールド値の照合に使用されます。 フィールドのタイプが TEXT の場合、Tablestore は文字列をトークン化し、トークンを使用してキーワードを照合します。行内のトークンの少なくとも 1 つがキーワードと完全に一致すると、その行はクエリ条件を満たします。たとえば、行の TEXT タイプのフィールドの値が "tablestore is cool" の場合、値は "tablestore"、"is"、"cool" にトークン化できます。フィールドの値と照合するキーワードとして "tablestore"、"is"、または "cool" を指定すると、行はクエリ条件を満たします。 |
GetTotalCount | クエリ条件を満たす行の総数を返すかどうかを指定します。このパラメーターのデフォルト値は false で、クエリ条件を満たす行の総数は返されません。 このパラメーターを true に設定すると、クエリのパフォーマンスが低下します。 |
Query | クエリタイプ。タームクエリを使用するには、このパラメーターを TermQuery に設定します。 |
TableName | データテーブルの名前。 |
IndexName | 検索インデックスの名前。 |
ColumnsToGet | クエリ条件を満たす各行のすべての列を返すかどうかを指定します。このパラメーターには、ReturnAll、Columns、ReturnAllFromIndex を設定できます。 ReturnAll のデフォルト値は false で、すべての列が返されるわけではないことを指定します。次のいずれかの方法を使用して、返す列を指定できます。次の方法を使用して返す列を指定しない場合、主キー列のみが返されます。
ReturnAll を true に設定すると、すべての列が返されます。 |
例
次のサンプルコードは、Keyword_type_col 列の値が SearchIndex と完全に一致する行をクエリする方法の例を示しています。
/// <summary>
/// Keyword_type_col 列の値が SearchIndex と完全に一致する行をテーブルで検索します。
/// </summary>
/// <param name="otsClient"></param>
public static void TermQuery(OTSClient otsClient)
{
var searchQuery = new SearchQuery();
// クエリ条件を満たす行の総数を返すように指定します。
searchQuery.GetTotalCount = true;
// クエリタイプを TermQuery に設定し、照合するフィールドを Keyword_type_col に、キーワードを SearchIndex に設定します。
searchQuery.Query = new TermQuery("Keyword_type_col", new ColumnValue("SearchIndex"));
var request = new SearchRequest(TableName, IndexName, searchQuery);
// ColumnsToGet パラメーターを設定して返す列を指定したり、すべての列を返すように指定したり、検索インデックスのすべての列を返すように指定したりできます。このパラメーターを設定しない場合、主キー列のみが返されます。
request.ColumnsToGet = new ColumnsToGet()
{
// 検索インデックスのすべての列を返すように指定します。
ReturnAllFromIndex = true
// 返す列を指定します。
//Columns = new List<string>() { Long_type_col, Text_type_col, Keyword_type_col }
// すべての列を返すように指定します。
//ReturnAll = true
};
var response = otsClient.Search(request);
// NextToken の値を確認します。
}
FAQ
関連情報
検索インデックスを使用してデータをクエリする場合、次のクエリメソッドを使用できます:タームクエリ、タームズクエリ、マッチオールクエリ、マッチクエリ、マッチフレーズクエリ、プレフィックスクエリ、レンジクエリ、ワイルドカードクエリ、ブールクエリ、ジオクエリ、ネステッドクエリ、exists クエリ。ビジネス要件に基づいて、さまざまなクエリメソッドを使用して複数のディメンションからデータをクエリできます。
ソート機能とページング機能を使用して、クエリ条件を満たす行をソートまたはページングできます。詳細については、ソートとページングを参照してください。
折りたたみ(重複排除)機能を使用して、特定の列に基づいて結果セットを折りたたむことができます。このようにして、指定されたタイプのデータはクエリ結果に一度だけ表示されます。詳細については、折りたたみ(重複排除)を参照してください。
データテーブルのデータを分析する場合、Search オペレーションの集計機能を使用するか、SQL ステートメントを実行できます。たとえば、最小値、最大値、合計、行の総数などを取得できます。詳細については、集計とSQL クエリを参照してください。
行をソートする必要なく、クエリ条件を満たすすべての行を取得する場合、ParallelScan オペレーションと ComputeSplits オペレーションを呼び出して並列スキャン機能を使用できます。詳細については、並列スキャンを参照してください。