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

Tablestore:Exists クエリ

最終更新日:Dec 28, 2024

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

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

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

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

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

前提条件

パラメーター

パラメーター

説明

field_name

クエリ対象の列の名前。

query

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

get_total_count

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

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

table_name

データテーブルの名前。

index_name

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

columns_to_get

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

  • return_type フィールドを ColumnReturnType.SPECIFIED に設定すると、column_names フィールドを使用して返す列を指定できます。

  • return_type フィールドを ColumnReturnType.ALL に設定すると、すべての列が返されます。

  • return_type フィールドを ColumnReturnType.NONE に設定すると、プライマリキー列のみが返されます。

次の例は、city 列の値が空でない行をクエリする方法を示しています。

  • Python SDK V5.2.1 以降を使用して Exists クエリを実行する

    Python SDK V5.2.1 以降を使用して Exists クエリを実行する場合、デフォルトで SearchResponse オブジェクトが返されます。次のコードはリクエストの例です。

    query = ExistsQuery("city")
    search_response = client.search(
        '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',
        SearchQuery(query, limit=100, get_total_count=True),
        ColumnsToGet(return_type=ColumnReturnType.ALL)
    )
    print('request_id : %s' % search_response.request_id)
    print('is_all_succeed : %s' % search_response.is_all_succeed)
    print('total_count : %s' % search_response.total_count)
    print('rows : %s' % search_response.rows)

    次のリクエスト例を使用して、タプル型の結果を返すことができます。

    query = ExistsQuery("city")
    rows, next_token, total_count, is_all_succeed, agg_results, group_by_results = client.search(
        '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',
        SearchQuery(query, limit=100, get_total_count=True),
        ColumnsToGet(return_type=ColumnReturnType.ALL)
    ).v1_response()
  • 5.2.1 より前のバージョンの Python SDK を使用して Exists クエリを実行する

    5.2.1 より前のバージョンの Python SDK を使用して Exists クエリを実行する場合、デフォルトでタプル型の結果が返されます。次のコードはリクエストの例です。

    query = ExistsQuery("city")
    rows, next_token, total_count, is_all_succeed = client.search(
        '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',
        SearchQuery(query, limit=100, get_total_count=True),
        ColumnsToGet(return_type=ColumnReturnType.ALL)
    )

FAQ

参考資料