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
Sebuah instance OTSClient telah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi instance OTSClient.
Tabel data telah dibuat dan data telah ditulis ke tabel tersebut. Untuk informasi lebih lanjut, lihat Buat tabel data dan Tulis data.
Indeks pencarian telah dibuat untuk tabel data. Untuk informasi lebih lanjut, lihat Buat indeks pencarian.
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.