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

Tablestore:Exists クエリ

最終更新日:Dec 28, 2024

Exists クエリは、NULL クエリまたは NULL 値クエリとも呼ばれます。このクエリは、スパースデータで使用され、行の列が存在するかどうかを判断します。たとえば、住所列の値が空でない行をクエリできます。

説明
  • Nested 列に対して Exists クエリを実行する場合は、ネストクエリを使用できます。

  • 列に空の値が含まれているかどうかを確認する場合は、ExistsQuery を BoolQuery の mustNotQueries と共に使用する必要があります。

  • 次のいずれかの条件が満たされている場合、システムは列が存在しないと見なします。この例では、city 列が使用されています。

    • 検索インデックス内の city 列のタイプが、keyword などの基本タイプである場合。データテーブルに city 列が存在しない行がある場合、検索インデックスは city 列が存在しないと見なします。

    • 検索インデックス内の city 列のタイプが、keyword などの基本タイプである場合。データテーブル内の city 列の値が空の配列である行("city" = "[]")がある場合、検索インデックスは city 列が存在しないと見なします。

前提条件

パラメーター

パラメーター

説明

TableName

データテーブルの名前。

IndexName

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

Query

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

GetTotalCount

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

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

FieldName

クエリ対象のフィールド名。

ColumnsToGet

クエリ条件を満たす各行のすべての列を返すかどうかを指定します。このパラメーターには、ReturnAll、Columns、ReturnAllFromIndex を設定できます。

ReturnAll のデフォルト値は false で、すべての列が返されるわけではありません。次のいずれかの方法を使用して、返す列を指定できます。次の方法を使用して返す列を指定しない場合は、プライマリキー列のみが返されます。

  • Columns を設定して、返す列を指定します。

  • ReturnAllFromIndex を true に設定して、検索インデックスからすべての列を返します。

ReturnAll を true に設定すると、すべての列が返されます。

次のサンプルコードは、指定された列が空でない行をクエリする方法の例を示しています:

/// <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));
}

FAQ

参考資料