Buat satu atau beberapa indeks pencarian untuk tabel data menggunakan metode CreateSearchIndex. Saat membuat indeks pencarian, tentukan bidang-bidang yang akan dikueri dan, jika diperlukan, konfigurasikan opsi lanjutan seperti kunci routing kustom dan pengurutan awal.
Prasyarat
Sebelum memulai, pastikan bahwa:
-
Client Tablestore telah diinisialisasi. Untuk informasi selengkapnya, lihat Initialize the Tablestore Client.
-
Tabel data telah dibuat dan memenuhi kondisi berikut. Untuk informasi selengkapnya, lihat Create a data table.
-
Jumlah maksimum versi diatur ke 1.
-
Waktu hidup (TTL) diatur ke -1, atau pembaruan pada tabel data dinonaktifkan.
-
Kompatibilitas tipe bidang
Tipe data setiap bidang dalam indeks pencarian harus sesuai dengan tipe data bidang yang bersesuaian dalam tabel data.
Parameter
Untuk membuat indeks pencarian, tentukan nama tabel (TableName), nama indeks pencarian (IndexName), dan skema indeks (IndexSchema). IndexSchema mencakup FieldSchemas (pengaturan bidang), IndexSetting (pengaturan indeks), dan IndexSort (pengaturan pengurutan awal).
|
Parameter |
Deskripsi |
|
TableName |
Nama tabel data. |
|
IndexName |
Nama indeks pencarian. |
|
FieldSchemas |
Daftar objek FieldSchema. Setiap objek FieldSchema berisi parameter berikut:
|
|
IndexSetting |
Pengaturan indeks. Berisi parameter berikut: RoutingFields (Opsional): Bidang routing kustom. Pilih satu atau beberapa kolom kunci primer sebagai bidang routing. Dalam kebanyakan kasus, satu bidang routing sudah cukup—jika Anda menetapkan beberapa kunci routing, sistem akan menggabungkan nilainya menjadi satu nilai tunggal. Data dengan nilai bidang routing yang sama akan diindeks ke partisi data yang sama. |
|
IndexSort |
Pengaturan pengurutan awal untuk indeks. Jika tidak ditentukan, data diurutkan berdasarkan kunci primer secara default. Indeks yang berisi bidang Nested tidak mendukung IndexSort. Sorters (Wajib): Metode pengurutan awal. Mendukung pengurutan berdasarkan kunci primer atau berdasarkan nilai bidang. Untuk informasi selengkapnya, lihat Sorting and pagination.
|
|
TimeToLive |
Opsional. Waktu hidup (TTL) data dalam indeks pencarian, dalam satuan detik. Default: -1 (data tidak pernah kedaluwarsa). Nilai minimum: 86400 detik (satu hari). Data yang kedaluwarsa akan secara otomatis dibersihkan ketika periode retensi melebihi TTL yang dikonfigurasi. |
Contoh
Buat indeks pencarian dengan konfigurasi default
Buat indeks pencarian dengan tiga bidang: Keyword_type_col (Keyword), Long_type_col (Long), dan Text_type_col (Text), dengan pengurutan dan agregasi diaktifkan pada bidang Keyword dan Long.
/// <summary>
/// Membuat indeks pencarian dengan tiga kolom atribut: Keyword_type_col, Long_type_col, dan Text_type_col.
/// Tipe bidang: Keyword (string tidak ditokenisasi), Long (integer), dan Text (string ditokenisasi).
/// </summary>
/// <param name="otsClient"></param>
public static void CreateSearchIndex(OTSClient otsClient)
{
// Tetapkan nama tabel dan nama indeks pencarian.
CreateSearchIndexRequest request = new CreateSearchIndexRequest(TableName, IndexName);
List<FieldSchema> FieldSchemas = new List<FieldSchema>() {
new FieldSchema(Keyword_type_col, FieldType.KEYWORD) {
index = true, // Aktifkan pengindeksan.
EnableSortAndAgg = true // Aktifkan pengurutan dan agregasi.
},
new FieldSchema(Long_type_col, FieldType.LONG) { index = true, EnableSortAndAgg = true },
new FieldSchema(Text_type_col, FieldType.TEXT) { index = true }
};
request.IndexSchame = new IndexSchema()
{
FieldSchemas = FieldSchemas
};
// Buat indeks pencarian.
CreateSearchIndexResponse response = otsClient.CreateSearchIndex(request);
Console.WriteLine("Searchindex is created: " + IndexName);
}
Buat indeks pencarian dan tentukan IndexSort
Buat indeks pencarian dengan tiga bidang: Keyword_type_col (Keyword), Long_type_col (Long), dan Text_type_col (Text). Hasil diurutkan awal berdasarkan bidang Long_type_col dalam urutan menaik.
/// <summary>
/// Membuat indeks pencarian dengan tiga kolom atribut: Keyword_type_col, Long_type_col, dan Text_type_col.
/// Tipe bidang: Keyword (string tidak ditokenisasi), Long (integer), dan Text (string ditokenisasi).
/// Mengurutkan awal hasil berdasarkan Long_type_col dalam urutan menaik.
/// </summary>
/// <param name="otsClient"></param>
public static void CreateSearchIndexWithIndexSort(OTSClient otsClient)
{
// Tetapkan nama tabel dan nama indeks pencarian.
CreateSearchIndexRequest request = new CreateSearchIndexRequest(TableName, IndexName);
List<FieldSchema> FieldSchemas = new List<FieldSchema>() {
new FieldSchema(Keyword_type_col, FieldType.KEYWORD) {
index = true,
EnableSortAndAgg = true
},
new FieldSchema(Long_type_col, FieldType.LONG) { index = true, EnableSortAndAgg = true },
new FieldSchema(Text_type_col, FieldType.TEXT) { index = true }
};
request.IndexSchame = new IndexSchema()
{
FieldSchemas = FieldSchemas,
// Urutkan awal berdasarkan Long_type_col (menaik). Bidang harus memiliki EnableSortAndAgg diaktifkan.
IndexSort = new DataModel.Search.Sort.Sort()
{
Sorters = new List<DataModel.Search.Sort.ISorter>
{
new DataModel.Search.Sort.FieldSort(Long_type_col, DataModel.Search.Sort.SortOrder.ASC)
}
}
};
CreateSearchIndexResponse response = otsClient.CreateSearchIndex(request);
Console.WriteLine("Searchindex is created: " + IndexName);
}
Buat indeks pencarian yang berisi kolom tanggal dan kolom virtual
Buat indeks pencarian dengan lima bidang: pk0 (Keyword), pk1 (Long), date_col (Date), geo_col (Geo-point), dan col0_v1 (Text). Kolom virtual col0_v1 dipetakan ke kolom sumber col0. Hasil diurutkan awal berdasarkan pk1 dalam urutan menaik.
/// <summary>
/// Membuat indeks pencarian yang mencakup bidang Date dan kolom virtual.
/// Kolom virtual col0_v1 dipetakan ke kolom sumber col0 dalam tabel data.
/// </summary>
/// <param name="otsClient"></param>
public static void CreateSearchIndex(OTSClient otsClient)
{
List<FieldSchema> fieldSchemas = new List<FieldSchema> {
new FieldSchema("pk0", FieldType.KEYWORD)
{
index = true,
EnableSortAndAgg = true
},
new FieldSchema("pk1", FieldType.LONG)
{
index = true,
EnableSortAndAgg = true
},
new FieldSchema("date_col", FieldType.DATE)
{
index = true,
DateFormats = new List<string>(){
"yyyy-MM-dd'T'HH:mm:ss.SSSSSS",
"yyyy-MM-dd'T'HH:mm:ss.SSS"
}
},
new FieldSchema("geo_col", FieldType.GEO_POINT)
{
index = true,
EnableSortAndAgg = true
},
new FieldSchema("col0_v1", FieldType.TEXT)
{
index = true,
Analyzer = Analyzer.Split,
AnalyzerParameter = new SingleWordAnalyzerParameter(true, true),
IsVirtualField = true,
SourceFieldNames = new List<string> { "col0" } // Dipetakan ke kolom sumber col0.
},
};
CreateSearchIndexRequest request = new CreateSearchIndexRequest(TableName, IndexName);
request.IndexSchame = new IndexSchema()
{
FieldSchemas = fieldSchemas,
IndexSort = new Sort(new List<ISorter> { new FieldSort("pk1", SortOrder.ASC) })
};
request.TimeToLive = -1; // Data tidak pernah kedaluwarsa.
otsClient.CreateSearchIndex(request);
}
FAQ
Lanjutan
-
Kueri indeks pencarian menggunakan berbagai jenis kueri untuk analisis data multidimensi, termasuk term query, terms query, match all query, match query, match phrase query, prefix query, range query, wildcard query, geo query, Boolean query, nested query, dan exists query.
-
Terapkan pengurutan dan paginasi atau collapse (deduplikasi) pada hasil kueri.
-
Kelola indeks pencarian dengan memodifikasi skema secara dinamis, menampilkan daftar indeks pencarian, menampilkan deskripsi indeks pencarian, dan menghapus indeks pencarian.
-
Untuk analitik seperti mencari nilai maksimum atau minimum, menghitung jumlah, atau menghitung baris, gunakan fitur agregasi statistik atau kueri SQL.
-
Untuk mengekspor data dengan cepat tanpa memerlukan urutan hasil tertentu, gunakan fitur pemindaian paralel.