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

Tablestore:Exists クエリ

最終更新日:Dec 28, 2024

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

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

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

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

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

前提条件

パラメーター

パラメーター

説明

table_name

データテーブルの名前。

index_name

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

field_name

クエリする列の名前。

query_type

クエリタイプ。クエリタイプを QueryTypeConst::EXISTS_QUERY に設定します。

説明

ネストされた列を直接クエリすることはできません。ネストされた列をクエリするには、ネストされた列のパスとサブクエリを指定して NestedQuery をカプセル化する必要があります。サブクエリは任意のタイプのクエリにすることができます。詳細については、ネストクエリを参照してください。

このセクションでは、exists クエリを実行する方法の例を示します。

text 列に空でない行をクエリする

次のサンプルコードは、テーブルの text 列に空でない行をクエリする方法を示しています。

$request = array(
    'table_name' => 'php_sdk_test',
    'index_name' => 'php_sdk_test_search_index',
    'search_query' => array(
        'offset' => 0,
        'limit' => 2,
        'get_total_count' => true,
        'query' => array(
            'query_type' => QueryTypeConst::EXISTS_QUERY,
            'query' => array(
                'field_name' => 'text' // text 列を指定
            )
        )
    ),
    'columns_to_get' => array(
        'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED,
        'return_names' => array('keyword', 'long', 'array')
    )
);
$response = $otsClient->search($request);

ネストされた列のサブカラムに空でない行をクエリする

次のサンプルコードは、テーブルのネストされた列の nested_long サブカラムに空でない行をクエリする方法を示しています。

$request = array(
    'table_name' => 'php_sdk_test',
    'index_name' => 'php_sdk_test_search_index',
    'search_query' => array(
        'offset' => 0,
        'limit' => 2,
        'get_total_count' => true,
        'query' => array(
            'query_type' => QueryTypeConst::NESTED_QUERY,
            'query' => array(
                'path' => "nested", // ネストされた列のパス
                'query' => array(
                    'query_type' => QueryTypeConst::EXISTS_QUERY,
                    'query' => array(
                        'field_name' => 'nested.nested_long', // ネストされた列のサブカラム nested_long を指定
                    )
                ),
                'score_mode' => ScoreModeConst::SCORE_MODE_AVG
            )
        )
    ),
    'columns_to_get' => array(
        'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED,
        'return_names' => array('nested')
    )
);
$response = $this->otsClient->search($request);

FAQ

関連情報

  • 検索インデックスを使用してデータをクエリする場合、次のクエリメソッドを使用できます。term クエリterms クエリmatch all クエリmatch クエリmatch phrase クエリprefix クエリrange クエリwildcard クエリブールクエリgeo クエリネストクエリexists クエリ。ビジネス要件に基づいて、さまざまなクエリメソッドを使用して複数のディメンションからデータをクエリできます。

    クエリ条件を満たす行をソートまたはページネーションする場合は、ソートおよびページネーション機能を使用できます。詳細については、ソートとページネーションを参照してください。

    特定の列に基づいて結果セットを折りたたむ場合は、折りたたみ (個別) 機能を使用できます。このようにして、指定されたタイプのデータはクエリ結果に一度だけ表示されます。詳細については、折りたたみ (個別)を参照してください。

  • データテーブルのデータ (極値、合計、行の総数など) を分析する場合は、集計操作を実行するか、SQL ステートメントを実行できます。詳細については、集計SQL クエリを参照してください。

  • 行をソートする必要なく、クエリ条件を満たすすべての行をすばやく取得する場合は、ParallelScan および ComputeSplits 操作を呼び出して並列スキャン機能を使用できます。詳細については、並列スキャンを参照してください。