Struktur tabel indeks
Setiap dokumen berisi beberapa bidang, dan setiap bidang menyimpan kumpulan kata kunci. Tujuan utama indeks adalah mempercepat pencarian.
-
Field: Menentukan nama dan tipe bidang dalam tabel indeks.
-
Inverted index: Digunakan untuk menemukan dokumen yang berisi kata kunci tertentu secara cepat.
-
Forward index (attribute): Menyimpan pemetaan dari ID dokumen ke bidang-bidangnya, seperti
DocID --> (term1, term2, ..., termN). Forward index dapat bernilai tunggal atau multi-nilai. Atribut bernilai tunggal memiliki panjang tetap (kecuali tipe STRING), sehingga mendukung pencarian berkinerja tinggi dan pembaruan. Atribut multi-nilai menyimpan jumlah item variabel untuk suatu bidang, sehingga menghasilkan pencarian lebih lambat dibanding atribut bernilai tunggal dan tidak mendukung pembaruan.Forward index biasanya digunakan setelah dokumen ditemukan untuk mengambil nilai atributnya secara cepat guna keperluan statistik, pengurutan, dan penyaringan. Tipe bidang dasar yang didukung untuk forward index meliputi:
INT8 (bilangan bulat bertanda 8-bit), UINT8 (bilangan bulat tak bertanda 8-bit),
INT16 (bilangan bulat bertanda 16-bit),
UINT16 (bilangan bulat tak bertanda 16-bit),
INTEGER (bilangan bulat bertanda 32-bit),
UINT32 (bilangan bulat tak bertanda 32-bit), INT64 (bilangan bulat bertanda 64-bit),
UINT64 (bilangan bulat tak bertanda 64-bit),
FLOAT (bilangan titik mengambang 32-bit),
DOUBLE (bilangan titik mengambang 64-bit),
STRING (string)
-
Summary: Disimpan dalam format yang mirip dengan atribut, namun summary menyimpan beberapa bidang untuk satu dokumen secara bersamaan dan membuat pemetaan, sehingga Anda dapat mengambil konten summary yang sesuai dari docid secara cepat. Summary terutama digunakan untuk menampilkan hasil. Karena ukuran konten summary umumnya besar, tidak disarankan mengambil terlalu banyak summary per kueri—hanya summary untuk dokumen yang hasilnya perlu ditampilkan yang diambil. Mengingat ukurannya yang besar, mesin menyediakan mekanisme kompresi untuk summary. Jika Anda mengonfigurasi kompresi summary dalam skema, mesin menggunakan zlib untuk mengompresi summary sebelum disimpan. Saat summary dibaca, mesin terlebih dahulu mendekompresinya lalu mengembalikannya kepada Anda.
Untuk detail lebih lanjut tentang konfigurasi tabel indeks, lihat Konfigurasi Tabel Indeks.
Contoh skema indeks:
{
"file_compress": [
{
"name": "file_compressor",
"type": "zstd"
},
{
"name": "no_compressor",
"type": ""
}
],
"table_name": "test",
"summarys": {
"summary_fields": [
"id",
"fb_boolean",
"fb_datetime",
"fb_string",
"fb_decimal",
"fb_bigint",
"fb_text"
],
"parameter": {
"file_compressor": "zstd"
}
},
"indexs": [
{
"index_name": "id",
"index_type": "PRIMARYKEY64",
"index_fields": "id",
"has_primary_key_attribute": true,
"is_primary_key_sorted": false
},
{
"index_name": "fb_boolean",
"index_type": "STRING",
"index_fields": "fb_boolean",
"file_compress": "file_compressor",
"format_version_id": 1
},
{
"index_name": "fb_datetime",
"index_type": "STRING",
"index_fields": "fb_datetime",
"file_compress": "file_compressor",
"format_version_id": 1
},
{
"index_name": "fb_string",
"index_type": "STRING",
"index_fields": "fb_string"
},
{
"index_name": "fb_text",
"index_type": "TEXT",
"index_fields": "fb_text"
}
],
"attributes": [
{
"field_name": "id",
"file_compress": "no_compressor"
},
{
"field_name": "fb_boolean",
"file_compress": "file_compressor"
},
{
"field_name": "fb_datetime",
"file_compress": "no_compressor"
},
{
"field_name": "fb_string",
"file_compress": "file_compressor"
},
{
"field_name": "fb_decimal",
"file_compress": "no_compressor"
},
{
"field_name": "fb_bigint",
"file_compress": "no_compressor"
}
],
"fields": [
{
"user_defined_param": {},
"field_name": "id",
"field_type": "INT64",
"compress_type": "equal"
},
{
"field_name": "fb_boolean",
"field_type": "STRING",
"compress_type": "uniq"
},
{
"field_name": "fb_datetime",
"field_type": "STRING",
"compress_type": "uniq"
},
{
"user_defined_param": {
"multi_value_sep": ","
},
"field_name": "fb_string",
"field_type": "STRING",
"compress_type": "equal",
"multi_value": true
},
{
"field_name": "fb_decimal",
"field_type": "DOUBLE"
},
{
"field_name": "fb_bigint",
"field_type": "INT64",
"compress_type": "equal"
},
{
"field_name": "fb_text",
"field_type": "TEXT",
"analyzer": "chn_standard"
}
]
}
Tambahkan tabel indeks
-
Pada halaman manajemen instans, buka pusat konfigurasi > struktur indeks, lalu klik Add Index Table.
-
Konfigurasikan tabel indeks, pilih sumber data, dan atur shard data:
Pada bagian tabel indeks, atur nama tabel indeks. Pada bagian sumber data, pilih sumber data yang telah dikonfigurasi. Pada bagian shard data, atur jumlah shard. Di area Select Template, Anda dapat memilih templat General Template, Vector: Image Search, atau Vector: Text Semantic Search.
-
Konfigurasikan bidang. Di area konfigurasi bidang, Anda dapat mengatur properti untuk setiap bidang, termasuk nama dan tipenya, apakah merupakan bidang multi-nilai, apakah merupakan bidang atribut, serta pengaturan tipe indeks dan alat analisisnya.
Pengaturan Pembatas Bidang Multi-nilai:
Secara default, pembatas ha3 ^] digunakan. Anda juga dapat menyesuaikan pembatas sesuai kebutuhan bisnis Anda.
Kompresi Atribut dan Konten Bidang:
-
Anda dapat mengaktifkan atau menonaktifkan kompresi untuk bidang atribut. Kompresi dinonaktifkan secara default. Pilih file_compressor untuk mengaktifkan kompresi.
-
Anda dapat mengaktifkan atau menonaktifkan kompresi untuk konten bidang. Kompresi dinonaktifkan secara default. Secara default,
uniqdipilih untuk tipe multi-nilai dan STRING, sedangkanequaldipilih untuk tipe numerik bernilai tunggal.
Jika Anda mengaktifkan kompresi atribut, kami menyarankan mengedit metode pemuatan indeks di Deployment Management > Data Node > Online Table Configuration untuk mengurangi dampak terhadap kinerja.
Pengaturan indeks ditampilkan dalam tabel dengan kolom berikut: Nama indeks, Tipe indeks (seperti PRIMARYKEY64, STRING, dan TEXT), Bidang yang disertakan, Kompresi data (terkompresi/tidak terkompresi), Konfigurasi lanjutan (View/Modify), dan Aksi (Delete). Anda dapat menambahkan indeks baru dengan mengklik tombol + di bagian bawah.
Pengaturan Kompresi Bidang Indeks:
-
Anda dapat memilih apakah akan mengompresi bidang indeks. Kompresi dinonaktifkan secara default. Pilih file_compressor untuk mengaktifkan kompresi.
-
Indeks kunci primer tidak mendukung kompresi.
-
Jika Anda mengaktifkan kompresi indeks, kami menyarankan mengedit metode pemuatan indeks di Deployment Management > Data Node > Online Table Configuration untuk mengurangi dampak terhadap kinerja.
-
Setelah selesai mengonfigurasi, klik Save Version. Pada kotak dialog yang muncul, masukkan keterangan (opsional), lalu klik Publish.
Pada contoh ini, nama tabel indeks diatur sebagai vector_index, dan mode pengeditan adalah administrator mode. Di pengaturan bidang, dua bidang ditambahkan: id (tipe INT64, diatur sebagai kunci primer, dengan opsi Attribute Field dan Display in Search Results dipilih) dan embedding (tipe STRING, dengan opsi Display in Search Results dipilih).
-
Setelah tabel indeks berhasil ditambahkan, Anda dapat melihat topologinya di Deployment Management.
Diagram topologi menunjukkan arsitektur dari atas ke bawah: query service terhubung ke kluster (setiap kluster berisi data nodes dan query nodes), kluster terhubung ke tabel indeks, dan tabel indeks terhubung ke sumber data. Panah menunjukkan alur data antar lapisan.
-
Untuk menerapkan tabel indeks baru ke kluster, Anda harus secara manual memicu pembaruan konfigurasi dan pengindeksan penuh di O&M Management. Dalam operasi Update Configuration, pilih Push Configuration and Trigger Index Rebuild.
Untuk Configuration Type, pilih offline configuration. Di area Index Structure Version, pilih sumber data target, pilih tabel indeks dan versinya yang sesuai, lalu pilih Dictionary Configuration Version, Offline Configuration Version, dan Offline Plug-in Version yang diinginkan sesuai kebutuhan. Kemudian, klik OK.
Pilih Data Source Configuration Version, pilih Target Cluster, pilih Push Configuration and Trigger Index Rebuild, lalu klik OK.
-
Selama proses pembuatan ulang indeks, Anda dapat memantau kemajuan pengindeksan penuh di Change History pada bagian Data Source Changes:
Ikon menunjukkan status eksekusi saat ini untuk setiap tahap.
Setelah pembuatan ulang indeks selesai, Anda dapat melakukan kueri terhadap tabel indeks baru tersebut.
-
Pengaturan bidang harus mencakup satu dan hanya satu kunci primer.
-
Dalam pengaturan bidang, setidaknya satu bidang harus dipilih untuk ditampilkan dalam hasil pencarian.
-
Bidang TEXT memerlukan metode analisis dan tidak mendukung multi-nilai.
-
Pengaturan indeks harus mencakup satu dan hanya satu indeks kunci primer.
-
Selain pembatas default, pembatas multi-nilai kustom harus berupa satu karakter dan tidak boleh berupa karakter full-width.
-
Saat mengatur jumlah shard data, pastikan Number of Data Nodes melebihi jumlah replika dikalikan jumlah shard data. Misalnya, kluster dengan 2 replika dan 2 shard data memerlukan lebih dari 4 node data.
-
Ikuti aturan berikut saat mengatur jumlah shard: Satu shard sebaiknya tidak berisi lebih dari 600 juta dokumen (maksimum 2,1 miliar). Ukuran indeks satu shard sebaiknya tidak melebihi 300 GB. Jika Anda memerlukan pembaruan real-time, transaksi per detik (TPS) untuk pembaruan data pada satu shard sebaiknya tidak melebihi 4.000 untuk perintah
add. Untuk perintahupdate, TPS dapat mencapai 10.000.
Edit tabel indeks
Pengantar versi tabel indeks:
Tabel indeks yang baru dibuat memiliki dua versi default:
-
index_config_v1: Versi awal tabel indeks. Statusnya berubah menjadi In Use setelah Anda mendorong konfigurasi dan menyelesaikan pembuatan ulang indeks. Jika tidak, statusnya adalah Not in Use.
-
index_config_edit: Versi yang sedang diedit. Statusnya selalu Editing.
Saat Anda menerbitkan versi baru, nama versi bertambah secara berurutan, misalnya index_config_v2, index_config_v3, dan seterusnya. Untuk membedakan versi secara jelas, keterangan wajib diisi untuk setiap versi.
Edit dan terbitkan versi tabel indeks baru:
-
Temukan versi dengan status Editing, lalu klik Edit.
Bentangkan baris untuk versi index_config_edit, temukan test_main_schema.json dalam daftar nama file, lalu klik Edit pada baris tersebut.
Informasi tambahan tentang konfigurasi cluster.json:
Platform memungkinkan Anda mengonfigurasi strategi penggabungan indeks. Anda dapat mengonfigurasi customized_merge_config dan segment_customize_metrics_updater (hanya didukung pada instans baru).
Di panel navigasi sebelah kiri, pilih pusat konfigurasi > struktur indeks. Buka file main_cluster.json, temukan item konfigurasi customized_merge_config dalam tabel pasangan kunci-nilai, lalu klik Edit di kolom Actions.
Untuk detail parameter, lihat Konfigurasi kluster offline.
-
Setelah melakukan perubahan, klik Save Version.
Dalam editor struktur indeks untuk administrator mode (main_index_schema.json), di bagian Field settings, Anda dapat mengonfigurasi properti seperti nama bidang, tipe bidang, kunci primer, multi-nilai, metode analisis, bidang atribut, dan tampilan dalam hasil pencarian. Di bagian Index settings, Anda dapat mengelola nama indeks, tipe indeks, dan bidang yang disertakan.
Anda juga dapat beralih ke developer mode untuk mengedit skema secara manual:
Dalam editor JSON untuk developer mode, bagian summarys mengatur compress ke false, dan summary_fields mencakup lima bidang: id, age, name, address, dan info. Array indexs mendefinisikan tiga indeks: name (tipe STRING), address (tipe STRING), dan info (tipe TEXT). Setelah selesai mengedit, klik Save Version.
-
Temukan versi dengan status Editing, klik Publish, masukkan Remarks, lalu klik OK.
Sistem kemudian menghasilkan versi tabel indeks baru dengan status Not in Use.
-
Untuk menerapkan versi tabel indeks baru ke kluster, Anda harus memilih Push Configuration and Trigger Index Rebuild di O&M Management > Update Configuration.
Pada halaman Update Configuration, pilih offline configuration untuk Configuration Type. Di bagian Index Structure Version, pilih tabel indeks target dan versi yang akan didorong (misalnya, index_config_v4). Untuk Whether to trigger index rebuild, pilih Push configuration and trigger index rebuild, lalu klik OK.
Hapus versi tabel indeks:
Anda dapat langsung menghapus versi tabel indeks dengan status Not in Use.
Pada dialog konfirmasi, konfirmasi penghapusan—pesan akan mencatat bahwa tindakan ini tidak dapat dikembalikan—lalu klik OK.
Lihat versi tabel indeks:
Setelah Anda mengklik View, Anda akan diarahkan ke halaman konfigurasi read-only untuk versi tabel indeks tersebut:
Dalam administrator mode, bagian Field settings menampilkan konfigurasi bidang tabel indeks dalam bentuk tabel. Kolom-kolomnya meliputi Field name, Field type, Primary key, Multi-value, Attribute field, Display in search results, Data compression, Analysis method, dan Advanced configuration, memberikan gambaran jelas tentang definisi setiap bidang.
-
Developer mode.
Dalam developer mode, versi tabel indeks ditampilkan dalam format JSON di editor dengan nomor baris. Struktur JSON mencakup indexs (definisi indeks, seperti indeks kunci primer PRIMARYKEY64, yang berisi parameter seperti index_fields dan is_primary_key_sorted), attributes (daftar atribut), dan fields (definisi bidang, di mana setiap bidang menentukan field_name dan field_type, seperti INT64 atau STRING).
Hapus tabel indeks
Jika tabel indeks tidak memiliki versi dengan status In Use, Anda dapat langsung menghapusnya.
Pada halaman struktur indeks untuk tabel indeks tersebut, klik tautan Delete di sebelah nama tabel indeks untuk menghapusnya.
Jika tabel indeks memiliki versi dengan status In Use:
-
Di Deployment Management, klik tabel indeks tersebut, lalu berhenti berlangganan darinya.
Pilih tabel indeks target. Di panel yang muncul, pilih tab Online, lalu klik Unsubscribe di kolom Actions pada baris Subscription Status.
-
Kemudian, di pusat konfigurasi > struktur indeks, klik tautan Delete di sebelah nama tabel indeks target untuk menghapus tabel indeks yang sesuai.
Jika Anda unsubscribe dari tabel indeks di manajemen penerapan, Anda harus menghapus tabel indeks yang sesuai di struktur indeks untuk menghindari gangguan pada kluster online.
Catatan penggunaan
-
Menambahkan tabel indeks memerlukan sumber data. Jika tidak tersedia sumber data, Anda harus terlebih dahulu menambahkan sumber data lalu menambahkan tabel indeks.
-
Nama tabel indeks tidak dapat diubah setelah dibuat.
-
Anda tidak dapat langsung menghapus tabel indeks jika memiliki versi dengan status In Use.
-
Setiap tabel indeks hanya dapat memiliki satu versi dengan status Editing.