Topik ini menjelaskan cara melakukan kueri bersarang untuk menanyakan data pada baris anak dari kolom bersarang. Anda harus menggunakan operasi NestedQuery untuk membungkus kolom bersarang sebelum menanyakan kolom tersebut. Saat memanggil operasi NestedQuery, tentukan subkueri dari tipe apa pun dan jalur kolom bersarang.
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 |
Jalur | Jalur kolom bersarang. Jalur ini mirip dengan struktur pohon. Sebagai contoh, news.title menunjukkan subkolom judul dalam kolom berita bertipe bersarang. |
Kueri | Kueri pada subkolom dalam kolom bersarang. Kueri dapat berupa tipe kueri apa pun. |
ScoreMode | Menentukan nilai mana yang digunakan untuk menghitung skor ketika kolom berisi beberapa nilai. |
NamaTabel | Nama tabel data. |
NamaIndeks | Nama indeks pencarian. |
ColumnsToGet | Menentukan apakah akan mengembalikan semua kolom dalam baris yang memenuhi kondisi kueri. Anda dapat menentukan parameter ReturnAll, Columns, dan ReturnAllFromIndex. Nilai default ReturnAll adalah false, yang menentukan bahwa tidak semua kolom dikembalikan. Anda dapat menggunakan salah satu metode berikut untuk menentukan kolom yang ingin Anda kembalikan. Jika Anda tidak menggunakan metode berikut untuk menentukan kolom yang ingin Anda kembalikan, hanya kolom kunci utama yang dikembalikan.
Jika Anda menyetel ReturnAll ke true, semua kolom dikembalikan. |
Contoh
Berikut adalah kode sampel yang menunjukkan cara menanyakan baris di mana nilai subkolom nested_1 dalam kolom col_nested adalah "tablestore". Semua kolom dalam indeks pencarian dikembalikan.
/// <summary>
/// Query the rows in which the value of the col1_nested.nested_1 column is "tablestore". In this example, the col1_nested column is a nested column and contains the nested_1 and nested_2 subcolumns.
/// </summary>
/// <param name="otsClient"></param>
public static void NestedQuery(OTSClient otsClient)
{
var searchQuery = new SearchQuery();
// Return the total number of rows that meet the query conditions.
searchQuery.GetTotalCount = true;
var nestedQuery = new NestedQuery();
nestedQuery.Path = "col1_nested"; // Specify the path of the nested column.
TermQuery termQuery = new TermQuery("col1_nested.nested_1",new ColumnValue("tablestore"));// Construct a subquery of for the nested query.
nestedQuery.Query = termQuery;
nestedQuery.ScoreMode = ScoreMode.None;
var request = new SearchRequest(TableName, IndexName, searchQuery);
// You can specify the ColumnsToGet parameter to return the columns that you specify, all columns in the rows that meet the query conditions, or all columns in the search index. If you do not specify this parameter, only the primary key columns are returned.
request.ColumnsToGet = new ColumnsToGet()
{
// Return all columns in the search index.
ReturnAllFromIndex = true
// Return the columns that you specify.
//Columns = new List<string>() { Long_type_col, Text_type_col, Keyword_type_col }
// Return all columns in the rows that meet the query conditions.
//ReturnAll = true
};
var response = otsClient.Search(request);
Console.WriteLine("Total Count:" + response.TotalCount); // Display the total number of rows that meet the query conditions instead of the number of returned rows.
}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.
Anda dapat mengurutkan atau membagi halaman baris yang memenuhi kondisi kueri dengan menggunakan fitur pengurutan dan paging. Untuk informasi lebih lanjut, lihat Pengurutan dan Paging.
Anda dapat menggunakan fitur collapse (distinct) untuk meruntuhkan set hasil berdasarkan kolom tertentu. Dengan cara ini, data dari tipe yang ditentukan muncul hanya sekali dalam hasil kueri. Untuk informasi lebih lanjut, lihat Collapse (Distinct).
Jika Anda ingin menganalisis data dalam tabel data, Anda dapat menggunakan fitur agregasi dari operasi Pencarian atau mengeksekusi pernyataan SQL. Sebagai contoh, Anda bisa mendapatkan nilai minimum dan maksimum, jumlah, dan total jumlah baris. Untuk informasi lebih lanjut, lihat Agregasi dan Kueri SQL.
Jika Anda ingin 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.