Exists クエリは、NULL クエリまたは NULL 値クエリとも呼ばれます。このクエリはスパースデータにおいて、ある行の特定の列が存在するかどうかを判定するために使用されます。たとえば、address 列の値が空でない行をクエリできます。
-
Nested 列に対して Exists クエリを実行する場合は、ネストされたクエリを使用します。
-
列に空の値が含まれているかどうかを確認するには、ExistsQuery を BoolQuery の mustNotQueries と組み合わせて使用する必要があります。
-
以下のいずれかの条件を満たす場合、システムはその列が存在しないと判断します。ここでは city 列を例として説明します。
-
検索インデックス内の city 列の型は、キーワードなどの基本型です。データテーブルに city 列が存在しない行がある場合、検索インデックスはその行の city 列が存在しないとみなします。
-
多次元インデックスにおける city 列の型が keyword などの基本型であり、データテーブル内の行で city 列の値が空の配列("city" = "[]")である場合、多次元インデックスは city 列が存在しないと判断します。
-
前提条件
-
OTSClient インスタンスが初期化されていること。詳細については、「OTSClient インスタンスの初期化」をご参照ください。
-
データテーブルが作成され、データがデータテーブルに書き込まれます。詳細については、「データテーブルを作成する」および「データを書き込む」をご参照ください。
-
データテーブルに対して検索インデックスが作成されます。詳細については、「検索インデックスの作成」をご参照ください。
パラメーター
|
パラメーター |
説明 |
|
TableName |
データテーブルの名前。 |
|
IndexName |
検索インデックスの名前。 |
|
Query |
クエリの種類。 |
|
GetTotalCount |
クエリ条件に一致する行の総数を返すかどうか。デフォルト値は |
|
FieldName |
クエリ対象のフィールド名。 |
|
ColumnsToGet |
一致した各行のすべての列を返すかどうか。サポートされる値は、 デフォルトでは、
|
使用例
次の例では、pk0 列が空でない行をクエリします。
/// <summary>
/// pk0 列の値が空でない行をクエリするために Exists クエリを実行します。
/// </summary>
/// <param name="otsClient"></param>
public static void ExistsQuery(OTSClient otsClient)
{
ExistsQuery existsQuery = new ExistsQuery
{
FieldName = "pk0"
};
SearchQuery searchQuery = new SearchQuery
{
Query = existsQuery,
GetTotalCount = false
};
SearchRequest searchRequest = new SearchRequest(TableName, IndexName, searchQuery);
SearchResponse searchResponse = otsClient.Search(searchRequest);
Console.WriteLine(JsonConvert.SerializeObject(searchResponse));
}
よくある質問
参照
多次元インデックスを使用してデータをクエリする際は、以下のクエリ方法を利用できます:完全一致検索、複数値完全一致検索、完全一致検索、一致検索、フレーズ一致検索、プレフィックス検索、範囲クエリ、ワイルドカード検索、ブール値クエリ、ジオクエリ、ネストされたクエリ、および Exists クエリ。ビジネス要件に応じて、さまざまなクエリ方法を組み合わせて多角的にデータをクエリできます。
ソートおよびページング機能を使用して、クエリ条件に一致する行をソートまたはページングできます。詳細については、「ソートとページング」をご参照ください。
折りたたむ(distinct)機能を使用して、特定の列に基づいて結果セットを折りたたむことができます。これにより、指定されたタイプのデータがクエリ結果に 1 回だけ表示されます。詳細については、「折りたたむ(distinct)」をご参照ください。
データテーブル内のデータを分析したい場合は、Search 操作の集約機能を使用するか、SQL ステートメントを実行します。たとえば、最小値、最大値、合計値、行数の総数を取得できます。詳細については、「集約」および「SQL クエリ」をご参照ください。
行をソートする必要がなく、クエリ条件に一致するすべての行を取得したい場合は、ParallelScan 操作および ComputeSplits 操作を呼び出して並列スキャン機能を使用します。詳細については、「並列スキャン」をご参照ください。