Anda dapat menggunakan metode CreateSearchIndex untuk membuat satu atau beberapa indeks pencarian pada tabel data. Saat membuat indeks pencarian, tambahkan bidang yang ingin dikueri ke dalam indeks tersebut dan konfigurasikan opsi lanjutan seperti bidang routing dan pengurutan awal.
Prasyarat
Inisialisasi klien Tablestore. Untuk informasi selengkapnya, lihat Initialize a 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) harus bernilai -1 atau operasi pembaruan pada tabel data harus dinonaktifkan.
Catatan penggunaan
Saat membuat indeks pencarian, tipe data bidang di indeks pencarian harus sesuai dengan tipe data bidang di tabel data.
Untuk mengatur TTL indeks pencarian ke nilai selain -1, Anda harus menonaktifkan operasi UpdateRow pada tabel data. TTL indeks pencarian harus kurang dari atau sama dengan TTL tabel data. Untuk informasi selengkapnya, lihat Lifecycle management.
Parameter
Saat membuat indeks pencarian, Anda harus menentukan nama tabel (tableName), nama indeks (indexName), dan skema indeks (schema). Skema mencakup skema bidang (fieldSchemas), pengaturan indeks (indexSetting), serta pengaturan pengurutan awal indeks (indexSort). Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter | Deskripsi |
tableName | Nama tabel data. |
indexName | Nama indeks pencarian. |
fieldSchemas | Daftar skema bidang. Setiap skema bidang 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. Umumnya, Anda hanya perlu mengatur satu bidang. Jika Anda mengatur beberapa kunci routing, sistem akan menggabungkan nilai kunci-kunci routing tersebut 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. Tidak ada pengurutan awal yang dilakukan. 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 paging.
|
timeToLive |
Contoh
Buat indeks pencarian dan atur pemisah kata
Contoh berikut menunjukkan cara membuat indeks pencarian yang mencakup kolom-kolom berikut: pic_id (Keyword), count (Long), time_stamp (Long), pic_description (Text), col_vector (Vector), pos (Geo-point), pic_tag (Nested), date (Date), analyzer_single_word (Text), analyzer_split (Text), dan analyzer_fuzzy (Text). Kolom pic_tag memiliki dua sub-bidang: sub_tag_name (Keyword) dan tag_name (Keyword). Kolom analyzer_single_word menggunakan tokenisasi kata tunggal, kolom analyzer_split menggunakan tokenisasi dengan pembatas, sedangkan kolom analyzer_fuzzy menggunakan tokenisasi fuzzy.
client.createSearchIndex({
tableName: "<TABLE_NAME>", // Set the table name.
indexName: "<INDEX_NAME>", // Set the search index name.
schema: {
fieldSchemas: [
{
fieldName: "pic_id",
fieldType: TableStore.FieldType.KEYWORD, // Set the field name and field type.
index: true, // Enable indexing.
enableSortAndAgg: true, // Enable sorting and aggregation.
isAnArray: false
},
{
fieldName: "count",
fieldType: TableStore.FieldType.LONG,
index: true,
enableSortAndAgg: true,
isAnArray: false
},
{
fieldName: "time_stamp",
fieldType: TableStore.FieldType.LONG,
index: true,
enableSortAndAgg: false,
isAnArray: false,
},
{
fieldName: "pic_description",
fieldType: TableStore.FieldType.TEXT,
index: true,
enableSortAndAgg: false,
isAnArray: false,
},
{
fieldName: "col_vector",
fieldType: TableStore.FieldType.VECTOR,
index: true,
isAnArray: false,
vectorOptions: {
dataType: TableStore.VectorDataType.VD_FLOAT_32,
dimension: 4,
metricType: TableStore.VectorMetricType.VM_COSINE,
}
},
{
fieldName: "pos",
fieldType: TableStore.FieldType.GEO_POINT,
index: true,
enableSortAndAgg: true,
isAnArray: false,
},
{
fieldName: "pic_tag",
fieldType: TableStore.FieldType.NESTED,
index: false,
enableSortAndAgg: false,
fieldSchemas: [
{
fieldName: "sub_tag_name",
fieldType: TableStore.FieldType.KEYWORD,
index: true,
enableSortAndAgg: true,
},
{
fieldName: "tag_name",
fieldType: TableStore.FieldType.KEYWORD,
index: true,
enableSortAndAgg: true,
}
]
},
{
fieldName: "date",
fieldType: TableStore.FieldType.DATE,
index: true,
enableSortAndAgg: true,
isAnArray: false,
dateFormats: ["yyyy-MM-dd'T'HH:mm:ss.SSSSSS"],
},
{
fieldName: "analyzer_single_word",
fieldType: TableStore.FieldType.TEXT,
analyzer: "single_word",
index: true,
enableSortAndAgg: false,
isAnArray: false,
analyzerParameter: {
caseSensitive: true,
delimitWord: false,
}
},
{
fieldName: "analyzer_split",
fieldType: TableStore.FieldType.TEXT,
analyzer: "split",
index: true,
enableSortAndAgg: false,
isAnArray: false,
analyzerParameter: {
delimiter: ",",
}
},
{
fieldName: "analyzer_fuzzy",
fieldType: TableStore.FieldType.TEXT,
analyzer: "fuzzy",
index: true,
enableSortAndAgg: false,
isAnArray: false,
analyzerParameter: {
minChars: 1,
maxChars: 5,
}
},
],
indexSetting: { // The configuration options of the index.
"routingFields": ["count", "pic_id"], // Only primary key columns can be set as routing fields.
"routingPartitionSize": null
},
//indexSort: {// indexSort is not supported for indexes that contain Nested fields. No pre-sorting is performed.
//sorters: [
// { // If you do not set indexSort, the data is sorted by primary key in ascending order by default.
// primaryKeySort: {
// order: TableStore.SortOrder.SORT_ORDER_ASC
// }
// },
//{
// fieldSort: {
// fieldName: "Col_Keyword",
// order: TableStore.SortOrder.SORT_ORDER_DESC // Set the sorting order for indexSort.
// }
//}
//]
//},
timeToLive: 1000000, // Unit: seconds.
}
}, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:',data);
});Buat indeks pencarian dan aktifkan penyorotan
Contoh berikut menunjukkan cara mengaktifkan penyorotan saat membuat indeks pencarian. Indeks tersebut mencakup tiga bidang: k (Keyword), t (Text), dan n (Nested). Bidang n memiliki tiga sub-bidang: nk (Keyword), nl (Long), dan nt (Text). Fitur penyorotan diaktifkan untuk bidang t dan sub-bidang nt.
client.createSearchIndex({
tableName: "<TABLE_NAME>", // Set the table name.
indexName: "<SEARCH_INDEX_NAME>", // Set the search index name.
schema: {
fieldSchemas: [
{
fieldName: "k",
fieldType: TableStore.FieldType.KEYWORD, // Set the field name and field type.
index: true, // Enable indexing.
enableSortAndAgg: true, // Enable sorting and aggregation.
isAnArray: false
},
{
fieldName: "t",
fieldType: TableStore.FieldType.TEXT,
index: true,
enableSortAndAgg: false,
enableHighlighting: true, // Enable highlighting for the field.
isAnArray: false,
},
{
fieldName: "n",
fieldType: TableStore.FieldType.NESTED,
index: false,
enableSortAndAgg: false,
fieldSchemas: [
{
fieldName: "nk",
fieldType: TableStore.FieldType.KEYWORD,
index: true,
enableSortAndAgg: true,
},
{
fieldName: "nl",
fieldType: TableStore.FieldType.LONG,
index: true,
enableSortAndAgg: true,
},
{
fieldName: "nt",
fieldType: TableStore.FieldType.TEXT,
index: true,
enableSortAndAgg: false,
enableHighlighting: true, // Enable highlighting for the field.
},
]
},
],
indexSetting: { // The configuration options of the index.
"routingFields": ["id"], // Only primary key columns can be set as routing fields.
"routingPartitionSize": null
},
//indexSort: {// indexSort is not supported for indexes that contain Nested fields. No pre-sorting is performed.
//sorters: [
// { // If you do not set indexSort, the data is sorted by primary key in ascending order by default.
// primaryKeySort: {
// order: TableStore.SortOrder.SORT_ORDER_ASC
// }
// },
//{
// fieldSort: {
// fieldName: "Col_Keyword",
// order: TableStore.SortOrder.SORT_ORDER_DESC // Set the sorting order for indexSort.
// }
//}
//]
//},
timeToLive: 1000000, // Unit: seconds.
}
}, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:',data);
});FAQ
Referensi
Setelah membuat indeks pencarian, Anda dapat memilih jenis kueri untuk melakukan kueri data multidimensi. Jenis kueri indeks pencarian meliputi kueri tepat, kueri istilah, Pencocokan semua kueri, kueri cocok, permintaan pencocokan frasa, kueri awalan, kueri rentang, kueri wildcard, kueri geografis, Boolean query, Pencarian vektor, kueri bersarang, dan exists query.
Saat mengkueri data, Anda dapat menerapkan operasi pengurutan dan penomoran halaman, penyorotan, atau collapse (deduplikasi) pada set hasil.
Setelah membuat indeks pencarian, Anda dapat mengelolanya sesuai kebutuhan. Operasi tersebut meliputi memodifikasi skema secara dinamis, memperbarui konfigurasi indeks pencarian, menampilkan daftar indeks pencarian, mengkueri deskripsi indeks pencarian, dan menghapus indeks pencarian.
Untuk melakukan analitik data, seperti mencari nilai maksimum atau minimum, menghitung jumlah, atau menghitung jumlah baris, Anda dapat menggunakan fitur agregasi statistik atau fitur kueri SQL.
Untuk mengekspor data secara cepat tanpa mempertimbangkan urutan seluruh set hasil, Anda dapat menggunakan fitur Pemindaian paralel.