全部产品
Search
文档中心

Tablestore:Lakukan kueri bersarang

更新时间:Jul 02, 2025

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

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.

  • Konfigurasikan Columns untuk menentukan kolom yang ingin Anda kembalikan.

  • Setel ReturnAllFromIndex ke true untuk mengembalikan semua kolom dari indeks pencarian.

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.