全部產品
Search
文件中心

:巢狀型別查詢

更新時間:Jul 19, 2024

NestedQuery用於查詢巢狀型別欄位中子行的資料。巢狀型別不能直接查詢,需要通過NestedQuery封裝,NestedQuery中需要指定巢狀型別欄位的路徑和一個子查詢,其中子查詢可以是任意Query類型。

前提條件

參數

參數

說明

table_name

資料表名稱。

index_name

多元索引名稱。

path

路徑名,巢狀型別的列的樹狀路徑。例如news.title表示巢狀型別的news列中的title子列。

query

巢狀型別的列中子列上的查詢,子列上的查詢可以是任意Query類型。

score_mode

當列存在多個值時基於哪個值計算分數。

樣本

以下樣本用於查詢表中nested.nested_keyword列值為'sub'的資料。

$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,
            'score_mode' => ScoreModeConst::SCORE_MODE_AVG,
            'query' => array(
                'path' => "nested",
                'query' => array(
                    'query_type' => QueryTypeConst::TERM_QUERY,
                    'query' => array(
                        'field_name' => 'nested.nested_keyword',
                        'term' => 'sub'
                    )
                )
            )
        ),
        'sort' => array(
            array(
                'field_sort' => array(
                    'field_name' => 'nested.nested_long',
                    'order' => SortOrderConst::SORT_ORDER_DESC,
                    'nested_filter' => array(
                        'path' => "nested",
                        'query' => array(
                            'query_type' => QueryTypeConst::TERM_QUERY,
                            'query' => array(
                                'field_name' => 'nested.nested_keyword',
                                'term' => 'sub'
                            )
                        )
                    )
                )
            ),
        )
    ),
    'columns_to_get' => array(
        'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED,
        'return_names' => array('nested')
    )
);
$response = $otsClient->search($request);

常見問題

相關文檔