全部产品
Search
文档中心

Tablestore:Kueri Bersarang

更新时间:Jul 06, 2025

Anda dapat menggunakan kueri bersarang untuk menanyakan data pada baris anak dari bidang bersarang. Bidang bersarang tidak dapat diquery secara langsung. Untuk menanyakan bidang bersarang, Anda harus menentukan jalur bidang bersarang dan subkueri dalam objek NestedQuery. Subkueri dapat berupa jenis kueri apa pun.

Prasyarat

Parameter

Parameter

Deskripsi

table_name

Nama tabel data.

index_name

Nama indeks pencarian.

path

Jalur bidang bersarang. Bidang bersarang menggunakan struktur pohon. Sebagai contoh, news.title menentukan subbidang judul dalam bidang bersarang yang disebut news.

query

Kueri pada subbidang dalam bidang bersarang. Kueri bisa berupa kueri dari jenis apa pun.

score_mode

Nilai yang digunakan untuk menghitung skor jika sebuah bidang berisi beberapa nilai.

Contoh

Berikut ini adalah kode sampel untuk menanyakan baris di mana nilai kolom nested.nested_keyword adalah '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);

Pertanyaan Umum

Referensi

  • Saat menggunakan indeks pencarian untuk menanyakan data, Anda dapat menggunakan metode kueri berikut: kueri tepat, kueri terms, kueri cocok semua, kueri cocok, kueri frasa cocok, kueri awalan, kueri rentang, kueri wildcard, kueri Boolean, kueri geo, kueri bersarang, dan kueri exists. Anda dapat menggunakan metode kueri yang berbeda untuk menanyakan data dari berbagai dimensi sesuai dengan kebutuhan bisnis Anda.

    Jika ingin mengurutkan atau membagi halaman baris yang memenuhi kondisi kueri, Anda dapat menggunakan fitur Pengurutan dan paging. Untuk informasi lebih lanjut, lihat Pengurutan dan paging.

    Untuk merangkum set hasil berdasarkan kolom tertentu, Anda dapat menggunakan fitur collapse (distinct). Dengan cara ini, data dari tipe tertentu muncul hanya sekali dalam hasil kueri. Untuk informasi lebih lanjut, lihat Collapse (distinct).

  • Untuk menganalisis data dalam tabel data, seperti mendapatkan nilai ekstrem, jumlah total, dan jumlah baris, Anda dapat menjalankan operasi agregasi atau pernyataan SQL. Untuk informasi lebih lanjut, lihat Agregasi dan Kueri SQL.

  • Untuk mendapatkan semua baris yang memenuhi kondisi kueri tanpa perlu mengurutkan baris, Anda dapat memanggil operasi ParallelScan dan ComputeSplits untuk menggunakan fitur pemindaian paralel. Untuk informasi lebih lanjut, lihat Pemindaian paralel.