全部产品
Search
文档中心

Tablestore:Pengurutan dan Halaman

更新时间:Jul 02, 2025

Saat menggunakan indeks pencarian untuk mengkueri data, Anda dapat memanfaatkan metode pengurutan yang telah ditentukan sebelumnya atau menentukan metode pengurutan sendiri. Dengan cara ini, baris-baris yang memenuhi kondisi kueri akan dikembalikan sesuai dengan urutan yang telah ditentukan. Jika respons mencakup sejumlah besar baris, Anda dapat menemukan data yang diperlukan dengan mengonfigurasi parameter limit dan offset, atau menggunakan token.

Skenario

Kategori

Metode

Fitur

Skenario

Pengurutan

Tentukan metode pengurutan saat membuat indeks pencarian

Pra-pengurutan indeks

Secara default, data dalam indeks pencarian diurutkan berdasarkan pengaturan pra-pengurutan yang ditentukan oleh parameter IndexSort. Pengaturan pra-pengurutan yang ditentukan oleh parameter IndexSort menentukan urutan default di mana baris-baris yang memenuhi kondisi kueri dikembalikan.

Tentukan metode pengurutan saat mengkueri data

ScoreSort

Anda dapat menggunakan ScoreSort untuk mengurutkan hasil kueri berdasarkan skor relevansi kata kunci berbasis BM25. ScoreSort cocok untuk skenario seperti pencarian teks lengkap.

PrimaryKeySort

Anda dapat menggunakan PrimaryKeySort untuk mengurutkan hasil kueri berdasarkan nilai kunci utama. PrimaryKeySort cocok untuk skenario di mana Anda ingin mengurutkan data berdasarkan pengenal unik dari data tersebut.

FieldSort

Anda dapat menggunakan FieldSort untuk mengurutkan hasil kueri berdasarkan nilai satu atau lebih kolom. FieldSort cocok untuk skenario di mana Anda ingin mengurutkan data berdasarkan properti seperti volume penjualan atau jumlah tayangan halaman. Dalam banyak kasus, FieldSort digunakan di industri seperti e-commerce, jejaring sosial, dan aset media.

GeoDistanceSort

Anda dapat menggunakan GeoDistanceSort untuk mengurutkan hasil kueri berdasarkan lokasi geografis. GeoDistanceSort cocok untuk skenario di mana Anda ingin mengurutkan data berdasarkan jarak dari lokasi tertentu. Dalam banyak kasus, GeoDistanceSort digunakan di industri seperti pemetaan dan logistik. Sebagai contoh, Anda dapat mengurutkan restoran di sekitar lokasi berdasarkan jarak dari lokasi tersebut.

Halaman

Tentukan metode halaman saat mengkueri data

Konfigurasikan parameter Limit dan Offset

Jika jumlah baris dalam respons kurang dari 100.000, Anda dapat menggunakan metode ini untuk melompat ke halaman tertentu.

Gunakan token

Secara default, Anda hanya dapat melakukan paging mundur saat menggunakan token. Namun, Anda dapat menyimpan dan menggunakan token sebelumnya untuk paging maju karena token valid selama kueri.

Pra-pengurutan indeks

Secara default, data dalam indeks pencarian diurutkan berdasarkan pengaturan pra-pengurutan yang ditentukan oleh parameter IndexSort. Saat menggunakan indeks pencarian untuk mengkueri data, pengaturan pra-pengurutan dari parameter IndexSort menentukan urutan default hasil yang dikembalikan.

Saat membuat indeks pencarian, Anda dapat menentukan pengaturan pra-pengurutan dengan mengonfigurasi parameter IndexSort. Jika tidak menentukannya, data dalam indeks pencarian akan diurutkan berdasarkan nilai kunci utama.

Penting
  • Anda dapat menentukan PrimaryKeySort atau FieldSort sebagai metode pra-pengurutan untuk indeks pencarian. PrimaryKeySort mengurutkan data berdasarkan nilai kunci utama, sedangkan FieldSort mengurutkan data berdasarkan nilai bidang.

  • Indeks pencarian yang berisi bidang Nested tidak mendukung pra-pengurutan indeks.

  • Jika ingin memodifikasi pengaturan parameter IndexSort untuk indeks pencarian yang ada, Anda dapat memodifikasi skema indeks pencarian secara dinamis. Untuk informasi lebih lanjut, lihat Memodifikasi skema indeks pencarian secara dinamis.

Tentukan metode pengurutan saat mengkueri data

Pengurutan hanya dapat diaktifkan untuk bidang yang memiliki parameter EnableSortAndAgg disetel ke true.

Anda dapat menentukan metode pengurutan untuk setiap kueri. Kueri berbasis indeks pencarian mendukung metode pengurutan berikut. Anda juga dapat menentukan beberapa metode pengurutan berdasarkan prioritas yang berbeda.

ScoreSort

Anda dapat menggunakan ScoreSort untuk mengurutkan hasil kueri berdasarkan skor relevansi kata kunci berbasis BM25. ScoreSort cocok untuk skenario seperti pencarian teks lengkap.

Penting
  • Sebelum mengurutkan data berdasarkan skor relevansi kata kunci, Anda harus mengonfigurasi parameter untuk ScoreSort. Jika tidak, data yang cocok akan diurutkan berdasarkan pengaturan pra-pengurutan yang ditentukan oleh parameter IndexSort.

  • Saat menggunakan ScoreSort, bidang tipe FuzzyKeyword tidak digunakan untuk pengurutan, dan pengaturan parameter bobot tidak berlaku untuk bidang tersebut.

var searchQuery = new SearchQuery();
searchQuery.Sort = new Sort(new List<ISorter>() { new ScoreSort() });

PrimaryKeySort

Anda dapat menggunakan PrimaryKeySort untuk mengurutkan hasil kueri berdasarkan nilai kunci utama.

// Urutkan hasil kueri berdasarkan nilai kunci utama dalam urutan menaik. 
var searchQuery = new SearchQuery();
searchQuery.Sort = new Sort(new List<ISorter>() { new PrimaryKeySort() });

// Urutkan hasil kueri berdasarkan nilai kunci utama dalam urutan menurun. 
var searchQuery = new SearchQuery();
searchQuery.Sort = new Sort(new List<ISorter>() { new PrimaryKeySort(SortOrder.DESC) });

FieldSort

Anda dapat menggunakan FieldSort untuk mengurutkan hasil kueri berdasarkan nilai satu atau lebih kolom tertentu.

Urutkan hasil kueri berdasarkan nilai satu kolom

Anda dapat menggunakan FieldSort untuk mengurutkan hasil kueri berdasarkan nilai kolom tertentu.

var searchQuery = new SearchQuery();
var fieldSort = new FieldSort("col", SortOrder.ASC);
searchQuery.Sort = new Sort(new List<ISorter>() { fieldSort });

Urutkan hasil kueri berdasarkan nilai beberapa kolom

Anda juga dapat mengurutkan hasil kueri berdasarkan nilai dua kolom dalam urutan tertentu untuk menentukan urutan pengembalian data yang cocok.

var searchQuery = new SearchQuery();
var col1Sort = new FieldSort("col", SortOrder.ASC);
var col2Sort = new FieldSort("co2", SortOrder.ASC);
searchQuery.Sort = new Sort(new List<ISorter>() { col1Sort, col2Sort });

GeoDistanceSort

Anda dapat menggunakan GeoDistanceSort untuk mengurutkan hasil kueri berdasarkan lokasi geografis.

var searchQuery = new SearchQuery();
var geoDistanceSort = new GeoDistanceSort("geoCol", new List<string>(){"0","0"});
searchQuery.Sort = new Sort(new List<ISorter>() { geoDistanceSort });

Tentukan metode halaman

Anda dapat mengonfigurasi parameter Limit dan Offset atau menggunakan token untuk membagi halaman baris dalam respons.

Paging berdasarkan parameter Limit dan Offset

Jika jumlah total baris dalam respons kurang dari 100.000, Anda dapat mengonfigurasi parameter Limit dan Offset untuk membagi halaman baris. Jumlah dari nilai parameter Limit dan Offset tidak boleh melebihi 100.000. Nilai maksimum parameter Limit adalah 100.

Jika Anda tidak menentukan nilai untuk parameter Limit dan Offset, nilai default akan digunakan. Nilai default parameter Limit adalah 10. Nilai default parameter Offset adalah 0.

var searchQuery = new SearchQuery();
searchQuery.Query = new MatchAllQuery();
searchQuery.Limit = 100;
searchQuery.Offset = 100;

Paging berdasarkan token

Kami merekomendasikan agar Anda menggunakan token untuk halaman dalam karena metode ini tidak memiliki batasan pada kedalaman halaman.

Jika Tablestore tidak dapat membaca semua data yang memenuhi kondisi kueri, Tablestore mengembalikan NextToken. Anda dapat menggunakan NextToken untuk terus membaca data berikutnya.

Secara default, Anda hanya dapat melakukan paging mundur saat menggunakan token. Namun, Anda dapat menyimpan dan menggunakan token sebelumnya untuk paging maju karena token valid selama kueri.

Saat menggunakan token, metode pengurutan sama dengan metode yang digunakan dalam permintaan sebelumnya. Tablestore mengurutkan data berdasarkan parameter IndexSort secara default atau berdasarkan metode yang Anda tentukan. Anda tidak dapat menentukan metode pengurutan saat menggunakan token. Anda juga tidak dapat mengonfigurasi parameter Offset saat menggunakan token. Data dikembalikan halaman demi halaman secara berurutan, yang dapat menghasilkan kueri yang lambat.

Penting

Indeks pencarian yang berisi bidang Nested tidak mendukung IndexSort. Jika Anda memerlukan paging dan menggunakan indeks pencarian yang berisi bidang Nested untuk mengkueri data, Anda harus menentukan metode pengurutan dalam kondisi kueri untuk mengembalikan data dalam urutan yang ditentukan. Jika tidak, Tablestore tidak mengembalikan NextToken ketika hanya sebagian data yang memenuhi kondisi kueri dikembalikan.

/// <summary>
/// Dalam contoh ini, token digunakan untuk membagi halaman baris dalam respons dan Tablestore membaca semua data serta mengembalikan data dalam daftar. 
/// </summary>
/// <param name="otsClient"></param>
public static SearchResponse ReadMoreRowsWithToken(OTSClient otsClient)
{
    var searchQuery = new SearchQuery();
    searchQuery.Query = new MatchAllQuery();

    var request = new SearchRequest(TableName, IndexName, searchQuery);

    var response = otsClient.Search(request);
    var rows = response.Rows;
    while (response.NextToken != null) // Jika NextToken adalah null dalam respons, semua data telah dibaca. 
    {
        request.SearchQuery.Token = response.NextToken;
        response = otsClient.Search(request);
        rows.AddRange(response.Rows);
    }

    return response;
}

FAQ

Referensi

  • Saat menggunakan indeks pencarian untuk mengkueri data, Anda dapat menggunakan metode kueri berikut: kueri tepat, kueri terms, kueri match all, kueri match, kueri match phrase, kueri prefix, kueri range, kueri wildcard, kueri Boolean, kueri geo, kueri nested, dan kueri exists. Anda dapat menggunakan metode kueri yang berbeda untuk mengkueri data dari berbagai dimensi berdasarkan kebutuhan bisnis Anda.

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

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

  • Jika ingin menganalisis data dalam tabel data, Anda dapat menggunakan fitur agregasi operasi Search atau menjalankan pernyataan SQL. Sebagai contoh, Anda dapat memperoleh nilai minimum dan maksimum, jumlah, dan total jumlah baris. Untuk informasi lebih lanjut, lihat Agregasi dan Kueri SQL.

  • Jika ingin memperoleh 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.