Anda dapat menggunakan metode CreateSearchIndex untuk membuat satu atau beberapa indeks pencarian pada tabel data. Saat membuat indeks, Anda harus menentukan bidang yang akan dikueri dan dapat mengonfigurasi opsi lanjutan, seperti kunci routing kustom dan pengurutan awal.
Prasyarat
Inisialisasi klien Tablestore. Untuk informasi selengkapnya, lihat Initialize the Tablestore Client.
Buat tabel data yang memenuhi kondisi berikut. Untuk informasi selengkapnya, lihat Create a data table.
max versions harus bernilai 1.
time to live (TTL) bernilai -1, atau pembaruan pada tabel data dilarang.
Catatan
Saat membuat indeks pencarian, data type suatu bidang harus sesuai dengan bidang yang bersesuaian di tabel data.
Parameter
Untuk membuat indeks pencarian, Anda harus menentukan nama tabel (TableName), nama indeks pencarian (IndexName), dan skema indeks (IndexSchema). IndexSchema mencakup FieldSchemas (pengaturan bidang), IndexSetting (pengaturan indeks), dan IndexSort (pengaturan pengurutan awal). Tabel berikut menjelaskan parameter-parameter ini secara detail.
Parameter | Deskripsi |
TableName | Nama tabel data. |
IndexName | Nama indeks pencarian. |
FieldSchemas | Daftar objek FieldSchema. Setiap FieldSchema berisi parameter berikut:
|
IndexSetting | Pengaturan indeks, yang mencakup pengaturan RoutingFields. RoutingFields (Opsional): Bidang routing kustom. Anda dapat memilih beberapa kolom kunci primer sebagai bidang routing. Dalam kebanyakan kasus, Anda hanya perlu mengatur satu bidang. Jika Anda mengatur beberapa kunci routing, sistem akan menggabungkan nilai-nilainya menjadi satu nilai tunggal. |
IndexSort | Pengaturan pengurutan awal indeks, yang mencakup pengaturan Sorters. Jika Anda tidak mengatur parameter ini, data akan diurutkan berdasarkan kunci primer secara default. Catatan IndexSort tidak didukung untuk indeks yang berisi bidang Nested. Indeks semacam ini tidak memiliki pengurutan awal. Sorters (Wajib): Metode pengurutan awal untuk indeks. Anda dapat mengurutkan berdasarkan kunci primer atau berdasarkan nilai bidang. Untuk informasi selengkapnya tentang pengurutan, lihat Sorting and pagination.
|
TimeToLive |
Contoh
Buat indeks pencarian dengan konfigurasi default
Contoh berikut menunjukkan cara membuat indeks pencarian yang berisi tiga kolom: Keyword_type_col (Keyword), Long_type_col (Long), dan Text_type_col (Text). Pengurutan dan agregasi diaktifkan.
/// <summary>
/// Membuat indeks pencarian yang berisi tiga kolom atribut: Keyword_type_col, Long_type_col, dan Text_type_col. Tipenya diatur masing-masing menjadi Keyword (string non-tokenized), Long (integer), dan Text (string tokenized).
/// </summary>
/// <param name="otsClient"></param>
public static void CreateSearchIndex(OTSClient otsClient)
{
// Atur 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){ // Atur nama bidang dan tipe bidang.
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
};
// Panggil client untuk membuat indeks pencarian.
CreateSearchIndexResponse response = otsClient.CreateSearchIndex(request);
Console.WriteLine("Searchindex is created: " + IndexName);
}Buat indeks pencarian dan tentukan IndexSort
Contoh berikut menunjukkan cara membuat indeks pencarian yang berisi tiga kolom: Keyword_type_col (Keyword), Long_type_col (Long), dan Text_type_col (Text). Data diurutkan sebelumnya berdasarkan kolom Long_type_col.
/// <summary>
/// Membuat indeks pencarian yang berisi tiga kolom atribut: Keyword_type_col, Long_type_col, dan Text_type_col. Tipenya diatur masing-masing menjadi Keyword (string non-tokenized), Long (integer), dan Text (string tokenized).
/// </summary>
/// <param name="otsClient"></param>
public static void CreateSearchIndexWithIndexSort(OTSClient otsClient)
{
// Atur 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){ // Atur nama bidang dan tipe bidang.
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,
// Lakukan pengurutan awal berdasarkan kolom Long_type_col. Kolom Long_type_col harus diindeks dan memiliki EnableSortAndAgg yang 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
Contoh berikut menunjukkan cara membuat indeks pencarian yang berisi bidang pk0 (Keyword), pk1 (Long), date_col (Date), geo_col (Geo-point), dan col0_v1 (Text). Kolom sumber untuk kolom virtual col0_v1 adalah col0. Hasil diurutkan secara ascending berdasarkan kolom pk1.
/// <summary>
/// Membuat indeks pencarian yang berisi kolom tanggal dan kolom virtual.
/// </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" }
},
};
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;
otsClient.CreateSearchIndex(request);
}FAQ
Referensi
Setelah membuat indeks pencarian, Anda dapat menggunakan berbagai jenis kueri untuk kueri 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.
Saat mengkueri data, Anda dapat melakukan operasi pada set hasil, seperti sorting and pagination atau collapse (remove duplicates).
Setelah membuat indeks pencarian, Anda dapat mengelolanya dengan melakukan operasi seperti dynamically modifying the schema, listing search indexes, querying the description of a search index, dan deleting a search index.
Untuk analitik data, seperti mencari nilai maksimum atau minimum, menghitung jumlah, atau menghitung jumlah baris, Anda dapat menggunakan fitur statistical aggregation atau fitur SQL query.
Untuk mengekspor data secara cepat ketika urutan set hasil tidak penting, Anda dapat menggunakan fitur parallel scan.