Panduan ini menjelaskan cara membuat dan menghubungkan ke instans Alibaba Cloud Elasticsearch AI Engine Edition, serta menggunakan API Collection, Slice, pencarian vektor, dan manajemen data.
Alur kerja
Tabel berikut mencantumkan alur lengkap mulai dari aktivasi hingga operasional beserta bagian yang sesuai untuk setiap fase.
Fase | Operasi | Bagian |
1 Persiapan | Buat instans AI Engine Edition, konfigurasikan jaringan, akun, node indeks, dan node pencarian. Hubungkan ke instans dan verifikasi izin akun serta konektivitas jaringan. | Siapkan instans |
2 Pemilihan mode | Pilih antara mode namespace dan mode recall klaster vektor. Mode tidak dapat diubah setelah pembuatan. | Pilih mode Collection |
3 Memulai | Buat Collection dalam mode yang dipilih, rencanakan Slice, dan selesaikan operasi tulis dan kueri. | Mulai cepat |
4 Manajemen | Sesuaikan parameter kapasitas Collection dan pemetaan. Daftarkan, tampilkan daftar, dan hapus Slice. | Kelola Collection dan Slice |
5 Integrasi | Integrasikan dengan aplikasi Anda: tulis data secara batch, kendalikan visibilitas Refresh, tentukan cakupan kueri, dan Reindex sesuai kebutuhan. | Tulis, baca, dan kueri data |
6 Peningkatan | Gunakan cache warming, pengindeksan vektor DiskBBQ, Alias Collection, dan Copy Slice sesuai kebutuhan. | Fitur lanjutan |
7 Operasional | Monitor status kluster melalui pemantauan kluster dan API CAT, konfigurasikan izin role, dan bersihkan Collection yang tidak digunakan. | Operasional dan izin |
Referensi | Tinjau perbedaan dari Elasticsearch tradisional, batasan penggunaan, dan daftar API. | Referensi |
Contoh dalam panduan ini menggunakan sintaks Konsol yang didukung oleh Kibana Dev Tools. Saat menggunakan klien HTTP lain, konfigurasikan alamat instans, autentikasi, dan parameter TLS yang diperlukan.
Panduan ini berlaku untuk AI Engine Edition 9.99.0. Jalur permintaan, parameter, dan batasan penggunaan dalam panduan ini didasarkan pada versi ini. Versi lain mungkin berbeda. Gunakan dokumentasi yang sesuai dengan versi yang ditampilkan pada instans di Konsol.
Contoh menetapkan index.number_of_replicas ke 2 untuk memenuhi persyaratan dasar ketersediaan tinggi kueri. Jumlah shard utama, dimensi vektor, dan parameter kapasitas lainnya hanya untuk tujuan ilustrasi API. Konfigurasi produksi harus didasarkan pada evaluasi kapasitas dan hasil uji stres.
Panduan ini hanya mencakup API yang umum digunakan untuk pengembangan aplikasi dan manajemen harian, bukan semua API. Untuk posisi produk, arsitektur inti, keunggulan produk, skenario umum, dan referensi kinerja, lihat Ikhtisar fitur.
Siapkan instans
Prasyarat
Anda telah mengaktifkan layanan Alibaba Cloud Elasticsearch dan telah membuat atau berencana membuat instans AI Engine Edition.
Anda telah merencanakan VPC, vSwitch, daftar putih alamat IP, dan jaringan klien untuk instans tersebut.
Anda telah merancang pemetaan berdasarkan data bisnis Anda. Untuk skenario pencarian vektor, Anda juga perlu menentukan model vektor, dimensi, metrik kemiripan, dan metode pembaruan.
Akun Anda memiliki izin yang diperlukan. Manajemen Collection biasanya memerlukan
manage, membaca data memerlukanread, dan menulis data memerlukanwrite. Untuk informasi lebih lanjut, lihat Izin Collection.
Buat instans
Item pembelian dan tata letak halaman dapat berubah berdasarkan wilayah, versi, dan fase produk. Langkah-langkah berikut didasarkan pada halaman Konsol aktual. Wilayah dan zona yang didukung oleh AI Engine Edition didasarkan pada item yang dapat dibeli di halaman pembelian.
Login ke Konsol Alibaba Cloud Elasticsearch dan buka halaman pembuatan instans.
Pilih AI Engine Edition dan pilih wilayah serta zona yang disediakan oleh Konsol. Versi Elasticsearch untuk tipe instans ini bersifat tetap. Halaman pembuatan menampilkan versi 9.x, yang tidak dapat diubah. Setelah instans dibuat, Anda dapat melihat nomor versi spesifik di halaman daftar instans atau detail instans.
Konfigurasikan node indeks berdasarkan beban kerja tulis dan konfigurasikan node pencarian berdasarkan beban kerja kueri. Komponen opsional lainnya didasarkan pada Konsol.
Konfigurasikan VPC, vSwitch, username, dan password. Daftar putih alamat IP tidak dikonfigurasi di halaman pembuatan. Anda mengonfigurasinya di halaman konfigurasi keamanan instans setelah instans dibuat.
Konfirmasi konfigurasi dan biaya, lalu buat instans. Setelah status instans berubah menjadi Available, catat alamat akses Elasticsearch dan Kibana.
Spesifikasi node, jumlah minimum node, dan konfigurasi node master khusus didasarkan pada item yang dapat dibeli saat ini di halaman pembelian.
Jumlah dan spesifikasi node harus ditentukan berdasarkan throughput tulis, konkurensi kueri, konstruksi indeks vektor, set data aktif, dan kebutuhan cache. Operasi spesifik untuk menyesuaikan node dan aturan penagihan didasarkan pada Konsol.
Hubungkan ke instans
Anda dapat menggunakan Kibana Dev Tools, klien yang kompatibel dengan Elasticsearch, atau klien HTTP apa pun untuk mengakses instans. Alamat instans, daftar putih jaringan, sertifikat, dan metode autentikasi didasarkan pada halaman detail instans.
Nama domain akses AI Engine Edition bervariasi berdasarkan jenis jaringan. Nama domain hanya menentukan role node mana yang awalnya menerima permintaan dan tidak membatasi jenis permintaan. Kluster meneruskan permintaan ke role node yang benar-benar menanganinya.
Jenis jaringan | Nama domain | Node masuk | Penanganan permintaan |
Private network | Nama domain private network Elasticsearch default yang ditampilkan di Konsol | Search node | Mendukung baca dan tulis. Permintaan tulis diteruskan ke node indeks untuk diproses. |
Private network |
| Index node | Mendukung baca dan tulis. Permintaan kueri diteruskan ke node pencarian untuk diproses. Ganti |
Public network | Nama domain public network Elasticsearch default yang ditampilkan di Konsol | Search node | Hanya nama domain ini yang disediakan untuk akses public network. Mendukung baca dan tulis. Permintaan tulis diteruskan ke node indeks untuk diproses. |
Saat mengakses instans melalui private network, kedua nama domain mendukung operasi baca dan tulis. Untuk akses produksi, gunakan nama domain private network default untuk permintaan kueri dan nama domain private network node indeks untuk permintaan tulis guna mengurangi konsumsi bandwidth jaringan pada node pencarian. Ini sangat penting untuk tulis Bulk, kueri yang mengembalikan hasil besar, atau skenario konkurensi tinggi. Saat mengakses instans melalui public network, gunakan nama domain public network default untuk permintaan baca dan tulis.
Sebagai contoh, jika ID instans adalah es-cn-xxx, nama domain private network node indeks adalah es-cn-xxx-index.elasticsearch.aliyuncs.com. Protokol, port, dan metode akses jaringan didasarkan pada informasi yang ditampilkan di Konsol.
Instans menggunakan HTTP secara default. Jika Anda mengaktifkan HTTPS di Konsol, ubah protokol koneksi klien ke HTTPS.
Jalankan permintaan berikut di Kibana Dev Tools untuk memverifikasi koneksi:
GET /AI Engine Edition 9.99.0 sesuai dengan versi kernel Elasticsearch 9.5.0. Oleh karena itu, version.number yang dikembalikan oleh permintaan ini adalah nomor versi kernel, yang berbeda dari 9.99.0 yang ditampilkan di Konsol. Versi Elasticsearch aktual didasarkan pada respons API kluster. Saat menginstal plugin kustom, gunakan nomor versi 9.99.0 yang sesuai dengan AI Engine Edition.
Saat menggunakan cURL, ganti alamat instans dan kredensial. Untuk penggunaan produksi, jangan menyimpan password dalam teks biasa di skrip atau riwayat perintah:
curl --user '{username}:{password}' 'http://{elasticsearch-endpoint}/'Saat menggunakan klien resmi, pilih versi klien berdasarkan dokumentasi kompatibilitas API untuk versi instans Anda, dan gunakan kembali kolam koneksi klien. Jangan membuat klien baru untuk setiap permintaan.
Konvensi umum
Konvensi berikut berlaku untuk semua API Collection, Slice, dan dokumen dalam panduan ini. Bagian selanjutnya merujuknya tanpa mengulangi detailnya.
Konvensi akses
Aplikasi selalu mengakses data melalui nama Collection atau Alias Collection.
Dalam mode namespace, tulis dan kueri menentukan namespace melalui
_slice. Kueri yang tidak menyediakan_slicegagal. Untuk mengkueri semua Slice, gunakan secara eksplisit_slice=_all. Beberapa API dokumen dan kueri juga mendukungroutingsebagai alternatif. Untuk informasi lebih lanjut tentang cakupan yang didukung, lihat Parameter kompatibilitas routing.Dalam mode recall klaster vektor, tulis menentukan klaster vektor melalui
_sliceataurouting_field. Kueri KNN dapat secara otomatis memilih beberapa Slice kandidat berdasarkan vektor kueri. Kueri yang tidak dapat secara otomatis memilih Slice kandidat tetap memerlukan_sliceeksplisit, atauroutingdalam API yang kompatibel.Slice digunakan untuk mengatur data dan membatasi cakupan kueri. Slice bukan batas izin akun. Untuk mengisolasi izin penyewa, kombinasikan autentikasi tingkat aplikasi dengan mekanisme keamanan yang didukung produk.
Jangan menyimpan atau mengakses langsung indeks pendukung (Backing Index)
.sc-*. Nama dan siklus hidupnya dikelola oleh sistem. Beberapa respons API (seperti_indexdalam respons tulis danbacking_indexdalam respons pendaftaran Slice) mengembalikan nama-nama ini hanya untuk pengamatan dan troubleshooting. Nama-nama tersebut tidak boleh digunakan sebagai target untuk permintaan aplikasi selanjutnya. Saat mengonfigurasi izin role, gunakan pola wildcard.sc-<collection>-*. Untuk informasi lebih lanjut, lihat Izin Collection.
Parameter kompatibilitas routing
Saat menggunakan API baca/tulis dokumen dan kueri yang tercantum dalam panduan ini pada Collection atau Alias Collection, Anda dapat menggunakan parameter standar Elasticsearch routing sebagai pengganti _slice. Ini untuk kompatibilitas dengan klien yang ada. Untuk aplikasi baru, gunakan _slice yang lebih eksplisit secara semantik. URL yang sama atau item Bulk atau MGet yang sama tidak dapat menentukan kedua parameter secara bersamaan.
Kompatibilitas ini tidak berlaku untuk manajemen Collection dan Slice, cache warming, Copy Slice, CAT, Refresh eksplisit, atau Reindex. Reindex harus menggunakan source._slice dan dest._slice. routing_field adalah konfigurasi untuk menurunkan Slice dari bidang dokumen, bukan alias untuk routing.
Konvensi API umum
Permintaan JSON menggunakan
Content-Type: application/json. Bulk dan Multi Search menggunakanContent-Type: application/x-ndjsondan memerlukan baris baru di akhir badan permintaan.API Bulk, Multi Search, dan manajemen batch dapat mengalami kegagalan tingkat item. Aplikasi tidak hanya harus memeriksa kode status HTTP. API pendaftaran Slice tunggal dan batch juga menggunakan error tingkat item: permintaan keseluruhan mengembalikan HTTP
200, tetapi fielderrorstingkat atas mungkintrue. Periksa setiapitems[].resultsecara individual.HTTP
429menunjukkan bahwa server saat ini menolak permintaan. Klien harus menggunakan backoff eksponensial dengan batas atas dan hanya mencoba ulang operasi yang cocok untuk dicoba ulang.Timeout koneksi atau HTTP
5xxtidak berarti tulis pasti tidak terjadi. Verifikasi dengan ID dokumen stabil atau mekanisme idempoten lainnya sebelum mencoba ulang.Saat meneruskan sejumlah besar nilai
_slicemelalui URL, perhatikan bahwa panjang maksimum baris permintaan HTTP adalah 4096 byte. Saat nama Slice panjang,too_long_http_line_exceptionmungkin dipicu sebelum mencapai batas jumlah Slice.API manajemen Collection umumnya menggunakan parameter kueri berikut. Cakupan yang didukung spesifik didasarkan pada deskripsi setiap API.
Parameter | Nilai default umum | Deskripsi |
|
| Waktu maksimum untuk menunggu node master memproses permintaan. |
|
| Waktu maksimum untuk menunggu konfirmasi atau hasil saat ini. |
Permintaan manajemen yang mengembalikan acknowledged=false atau timeout tidak berarti operasi sisi server telah dikembalikan. Periksa status resource saat ini sebelum mencoba ulang.
Pilih mode Collection
Perbandingan mode
Collection menyediakan mode namespace dan mode recall klaster vektor. Anda harus memilih salah satu dari dua mode tersebut. Mode ditentukan oleh parameter pembuatan slice_strategy dan tidak dapat diubah setelah pembuatan. Mode ini memengaruhi makna bisnis Slice, metode pendaftaran, serta routing tulis dan kueri.
Item | Namespace Mode | Mode recall klaster vektor |
|
|
|
Arti Irisan | Namespace yang diidentifikasi oleh pengenal bisnis, seperti basis pengetahuan, repositori kode, Agent, atau penyewa. | Klaster vektor yang diperoleh dari pengelompokan offline. |
Prasyarat | Aplikasi mengetahui namespace yang akan diakses sebelum mengirim permintaan. | Aplikasi dapat menghasilkan dan terus-menerus memelihara klaster vektor serta vektor centroid-nya secara offline. |
Tulis routing | Tentukan namespace melalui | Tentukan klaster vektor melalui |
Routing kueri | Tentukan secara eksplisit satu, beberapa, atau semua namespace melalui | Kueri KNN dapat secara otomatis memilih dan mengkueri beberapa Slice kandidat berdasarkan vektor kueri. Anda juga dapat menentukan |
Nilai default |
|
|
Skenario yang berlaku | Cakupan kueri dapat ditentukan berdasarkan pengenal bisnis seperti ID penyewa, ID basis pengetahuan, atau ID repositori kode sebelum kueri. Misalnya, RAG multi-penyewa hanya perlu mencari basis pengetahuan penyewa saat ini. | Hanya vektor kueri yang tersedia saat kueri, dan cakupan data target tidak dapat ditentukan sebelumnya. Data telah dikelompokkan secara offline, dan klaster vektor yang paling relevan perlu di-recall secara otomatis dari database vektor berskala besar. Misalnya, kueri produk serupa dalam katalog produk lengkap. |
Skenario yang tidak berlaku | Cakupan kueri tidak dapat ditentukan sebelumnya, dan sistem perlu secara otomatis menemukan klaster vektor relevan berdasarkan vektor kueri. | Centroid klaster yang andal tidak dapat disediakan, skala data kecil, atau setiap kueri harus mencakup semua data vektor. |
Mode recall klaster vektor secara otomatis memilih beberapa Slice kandidat berdasarkan centroid klaster vektor dan mengirim kueri ke Slice-Slice tersebut secara paralel. Ini tidak berarti Anda harus menggunakan mode ini untuk menyimpan vektor. Mode namespace juga mendukung dense_vector, KNN, dan DiskBBQ. Pilih mode recall klaster vektor hanya ketika bisnis Anda perlu secara otomatis meng-recall klaster vektor relevan dan Anda telah menyelesaikan pemeliharaan centroid klaster serta evaluasi tingkat recall.
Panduan pengambilan keputusan
Mode Collection ditentukan saat pembuatan dan tidak dapat diubah nanti. Mengganti mode memerlukan pembuatan Collection baru dan menggunakan Reindex untuk migrasi data.
Gunakan panduan berikut untuk memilih antara kedua mode:
Rekomendasi default — Pilih mode namespace (
exact) ketika aplikasi dapat menentukan cakupan kueri dari pengenal bisnis (ID penyewa, ID basis pengetahuan, ID repositori kode) sebelum kueri.Pilih mode recall klaster vektor hanya ketika semua kondisi berikut terpenuhi:
Bisnis Anda dapat menghasilkan dan terus-menerus memelihara centroid klaster secara offline.
Volume data dan jumlah Slice cukup besar sehingga mempersempit cakupan kueri memberikan manfaat nyata.
Bisnis Anda memungkinkan pemilihan klaster kandidat sebelum menjalankan kueri KNN, dan Anda telah menentukan jumlah Slice kandidat yang sesuai melalui pengujian tingkat recall.
Jangan gunakan mode recall klaster vektor ketika:
Data tidak memiliki struktur pengelompokan yang stabil, dan vektor centroid yang andal tidak dapat disediakan.
Volume data atau jumlah Slice kecil, dan biaya kueri langsung sudah dapat diterima.
Kueri harus mencakup semua data vektor, dan perubahan cakupan recall yang diperkenalkan oleh pemilihan klaster kandidat tidak dapat diterima. Dalam kasus ini, gunakan mode namespace dan tentukan secara eksplisit cakupan kueri
_slice.
Setelah memilih mode namespace, lihat Mode namespace: Pencarian vektor DiskBBQ berdasarkan Slice. Setelah memilih mode recall klaster vektor, lihat Mode recall klaster vektor: Pemilihan Slice kandidat otomatis. Kemampuan manajemen Collection, API data, cache warming, Alias, Copy Slice, dan pemantauan lainnya dalam panduan ini berlaku untuk kedua mode kecuali dinyatakan lain.
Replica kueri dan ketersediaan tinggi
Kueri dalam kedua mode dilayani oleh shard replika pada node pencarian. index.number_of_replicas harus diatur minimal 1. Jika tidak, kueri tidak dapat dilayani. Mengaturnya ke 1 hanya memenuhi persyaratan dasar kueri dan tidak memberikan ketersediaan tinggi kueri. Untuk produksi, atur minimal 2 dan konfigurasikan minimal dua node pencarian sehingga kueri dapat terus dilayani ketika satu node pencarian gagal.
Mulai cepat
Mode namespace: Pencarian vektor DiskBBQ berdasarkan Slice
Platform basis pengetahuan perusahaan menyediakan layanan Generasi yang Diperkaya dengan Pengambilan Data (RAG) untuk beberapa penyewa. Setelah aplikasi menyelesaikan autentikasi penyewa, aplikasi dapat menentukan ID penyewa saat ini. Ketika pengguna mengajukan pertanyaan, aplikasi hanya perlu meng-recall segmen konten yang relevan secara semantik dari basis pengetahuan penyewa tersebut.
Skenario ini dapat menentukan cakupan kueri sebelum mengirim permintaan, sehingga cocok untuk mode namespace. Contoh ini membuat Collection bernama knowledge-chunks dan menggunakan setiap penyewa sebagai Slice. Aplikasi menentukan basis pengetahuan penyewa melalui _slice dan kemudian menggunakan DiskBBQ untuk melakukan KNN dalam Slice yang dipilih. Slice digunakan untuk mengatur data dan membatasi cakupan kueri. Autentikasi penyewa tetap ditangani oleh aplikasi atau mekanisme keamanan Elasticsearch yang didukung.
Langkah 1: Buat Collection mode namespace
PUT /_slice_collection/knowledge-chunks
{
"settings": {
"index.number_of_shards": 2,
"index.number_of_replicas": 2
},
"mappings": {
"properties": {
"tenant_id": { "type": "keyword" },
"document_id": { "type": "keyword" },
"title": { "type": "text" },
"content": { "type": "text" },
"category": { "type": "keyword" },
"updated_at": { "type": "date" },
"embedding": {
"type": "dense_vector",
"dims": 4,
"index": true,
"similarity": "cosine",
"index_options": {
"type": "bbq_disk"
}
}
}
}
}Hasil berikut dikembalikan. acknowledged bernilai true menunjukkan bahwa metadata Collection telah dibuat.
{
"acknowledged": true
}exact adalah strategi default, dan auto_create_slice diaktifkan secara default. Oleh karena itu, saat Anda menulis ke Slice yang belum ada untuk pertama kalinya, sistem secara otomatis mendaftarkan Slice tanpa memerlukan panggilan sebelumnya ke API pendaftaran.
Langkah 2: Tulis data ke Slice berbeda
Tulis segmen konten basis pengetahuan ke tenant-a:
PUT /knowledge-chunks/_doc/chunk-1001?_slice=tenant-a
{
"tenant_id": "tenant-a",
"document_id": "doc-refund-policy",
"title": "Refund and return policy",
"content": "You can request a refund for duplicate purchases within seven days after the order is completed.",
"category": "after-sales",
"updated_at": "2026-07-30T10:00:00Z",
"embedding": [0.82, 0.10, 0.05, 0.03]
}Tulis segmen konten basis pengetahuan lain ke tenant-b:
PUT /knowledge-chunks/_doc/chunk-1002?_slice=tenant-b
{
"tenant_id": "tenant-b",
"document_id": "doc-shipping-status",
"title": "Check shipping status",
"content": "Open the logistics information on the order details page to view the latest delivery status.",
"category": "shipping",
"updated_at": "2026-07-30T10:01:00Z",
"embedding": [0.12, 0.78, 0.06, 0.04]
}_id dokumen hanya perlu unik dalam Slice yang sama. _id yang sama dapat muncul di Slice berbeda.
Langkah 3: Baca data dan lakukan pencarian vektor dalam Slice
Baca dokumen tertentu di tenant-a:
GET /knowledge-chunks/_doc/chunk-1001?_slice=tenant-aBidang dense_vector tidak termasuk dalam _source yang dikembalikan secara default. Untuk mengembalikan nilai vektor, tentukan secara eksplisit _source_includes, misalnya, GET /knowledge-chunks/_doc/chunk-1001?_slice=tenant-a&_source_includes=embedding. Nilai yang dikembalikan dalam presisi float32 dan mungkin sedikit berbeda dari literal desimal yang ditulis.
Kueri vektor bergantung pada data yang telah di-Refresh. Setelah menulis data, tunggu minimal satu siklus Refresh otomatis sebelum menjalankan kueri berikut. Anda dapat memeriksa interval Refresh otomatis saat ini melalui GET /knowledge-chunks/_settings dan melihat nilai index.refresh_interval.
Jalankan kueri KNN DiskBBQ hanya di tenant-a:
POST /knowledge-chunks/_search?_slice=tenant-a
{
"knn": {
"field": "embedding",
"query_vector": [0.80, 0.12, 0.05, 0.03],
"k": 10,
"num_candidates": 100
},
"_source": ["document_id", "title", "content"]
}Dalam permintaan ini, aplikasi menentukan Slice melalui _slice=tenant-a. DiskBBQ hanya melakukan pencarian vektor dalam Slice yang dipilih dan tidak secara otomatis memilih Slice lain berdasarkan vektor kueri. Ini adalah perbedaan utama antara mode namespace dan mode recall klaster vektor.
Untuk sintaks dan batasan penggunaan kueri multi-Slice dan cakupan penuh, lihat Tentukan cakupan kueri.
Langkah 4: Tulis batch
Setiap item dalam permintaan Bulk dapat menentukan _slice sendiri:
POST /_bulk
{ "index": { "_index": "knowledge-chunks", "_id": "chunk-1003", "_slice": "tenant-a" } }
{ "tenant_id": "tenant-a", "document_id": "doc-change-address", "title": "Change delivery address", "content": "Before an order is shipped, you can change the delivery address on the order details page.", "category": "orders", "updated_at": "2026-07-30T10:02:00Z", "embedding": [0.75, 0.16, 0.06, 0.03] }
{ "index": { "_index": "knowledge-chunks", "_id": "chunk-1004", "_slice": "tenant-b" } }
{ "tenant_id": "tenant-b", "document_id": "doc-invoice", "title": "Request an electronic invoice", "content": "After an order is completed, you can request an electronic invoice on the invoice management page.", "category": "billing", "updated_at": "2026-07-30T10:03:00Z", "embedding": [0.18, 0.70, 0.08, 0.04] }Permintaan Bulk mungkin sebagian berhasil. Pemanggil harus memeriksa field errors tingkat atas dan result atau error setiap item.
Dokumen yang baru saja ditulis mungkin belum muncul dalam hasil kueri atau hitungan dokumen CAT. Untuk memverifikasi segera, tunggu minimal satu siklus Refresh otomatis.
Langkah 5: Verifikasi Collection dan Slice
Lihat status keseluruhan Collection:
GET /_cat/slice_collection/knowledge-chunks?vLihat Indeks Pendukung dan hitungan dokumen untuk setiap Slice:
GET /_cat/slice_collection/knowledge-chunks/slices?vUntuk mendapatkan daftar Slice lengkap secara terstruktur dan terpaginasi, gunakan API daftar Slice:
GET /_slice_collection/knowledge-chunks/slices?page_size=100Contoh respons:
{
"slices": [
{ "id": "tenant-a" },
{ "id": "tenant-b" }
]
}Jika respons berisi next_cursor, teruskan apa adanya ke permintaan berikutnya:
GET /_slice_collection/knowledge-chunks/slices?page_size=100&cursor={next_cursor}Verifikasi keberhasilan dan pembersihan
Indikator keberhasilan — Respons daftar Slice berisi
tenant-adantenant-b. Output CAT Slice menunjukkandocs.countminimal1untuk setiap Slice. Permintaan KNN DiskBBQ pada Langkah 3 mengembalikan hits dengan bidang_sourceyang diharapkan.Titik kegagalan umum — Jika respons KNN mengembalikan array
hitskosong segera setelah menulis, data mungkin belum di-Refresh. Tunggu minimal satu siklusindex.refresh_interval, atau gunakanrefresh=wait_forsaat menulis.Bersihkan data contoh — Untuk menghapus Collection contoh, lihat Hapus Collection.
Mode recall klaster vektor: Pemilihan Slice kandidat otomatis
Platform pencarian e-commerce memelihara database vektor produk berskala besar dan telah membagi produk menjadi ribuan klaster vektor melalui pengelompokan offline. Saat pengguna memulai kueri produk serupa, aplikasi hanya memiliki vektor kueri dan tidak dapat menentukan klaster target sebelumnya. Mengkueri semua data produk setiap kali meningkatkan cakupan kueri dan overhead resource seiring pertumbuhan skala data.
Skenario ini cocok untuk mode recall klaster vektor: setiap Slice sesuai dengan klaster vektor, dan vektor centroid klaster tersebut didaftarkan. Saat kueri KNN dieksekusi, sistem pertama-tama menghitung kemiripan antara vektor kueri dan setiap centroid klaster, secara otomatis memilih Slice kandidat yang paling relevan, lalu melakukan pencarian DiskBBQ secara paralel dalam Slice-Slice tersebut, sehingga mempersempit cakupan kueri.
Collection tidak melatih centroid klaster, juga tidak secara otomatis menentukan Slice target berdasarkan vektor dokumen. Aplikasi harus menghitung dan mendaftarkan vektor centroid terlebih dahulu.
Untuk kapan menggunakan dan kapan menghindari mode ini, lihat Panduan pengambilan keputusan.
Langkah 1: Buat Koleksi mode recall kluster vektor
PUT /_slice_collection/products
{
"slice_strategy": "vector_cluster",
"auto_create_slice": false,
"settings": {
"index.number_of_shards": 2,
"index.number_of_replicas": 2
},
"mappings": {
"properties": {
"cluster_id": { "type": "keyword" },
"name": { "type": "keyword" },
"embedding": {
"type": "dense_vector",
"dims": 2,
"index": true,
"similarity": "cosine",
"index_options": {
"type": "bbq_disk"
}
}
}
},
"config": {
"routing_field": "cluster_id",
"vector_dims": 2,
"default_query_vector_path": "knn.query_vector",
"default_query_slice_count": 128,
"max_query_slice_count": 512
}
}
| Wajib | Deskripsi |
| Tidak | Membaca Slice dari bidang tingkat atas dalam dokumen yang ditulis. Jalur bersarang dalam format |
| Ya | Dimensi vektor centroid Slice. Nilai valid: |
| Ya | Jalur vektor kueri dalam permintaan. Nilai yang didukung: |
| Tidak | Jumlah default Slice kandidat. Nilai default: |
| Tidak | Jumlah maksimum Slice kandidat yang diizinkan dalam satu kueri. Nilai default: |
Mode namespace (exact) tidak menerima config yang tidak kosong. Jika tidak, HTTP 400 dikembalikan.
Langkah 2: Daftarkan vektor centroid Slice
Daftarkan centroid klaster vektor tunggal:
PUT /_slice_collection/products/slices/cluster-a
{
"vector": [0.9, 0.1]
}Tugas pengelompokan offline biasanya menghasilkan beberapa centroid klaster vektor secara bersamaan. Anda dapat menggunakan API batch untuk mendaftarkannya sekaligus:
PUT /_slice_collection/products/slices
{
"slices": [
{
"slice_id": "cluster-b",
"vector": [0.1, 0.9]
},
{
"slice_id": "cluster-c",
"vector": [0.6, 0.4]
}
]
}API batch dapat mendaftarkan hingga 20480 Slice dengan nama unik sekaligus.
Baik API pendaftaran tunggal maupun batch menggunakan error tingkat item: bahkan jika dimensi vektor centroid tidak sesuai dengan config.vector_dims, permintaan tetap mengembalikan HTTP 200. Periksa errors tingkat atas dan result setiap elemen items untuk menentukan apakah pendaftaran berhasil. Permintaan HTTP yang berhasil tidak berarti semua klaster vektor telah didaftarkan.
Dimensi setiap vektor centroid harus sesuai dengan config.vector_dims. Slice tanpa vektor centroid masih dapat diakses secara eksplisit, tetapi tidak akan berpartisipasi dalam pemilihan Slice kandidat otomatis.
Langkah 3: Tulis data vektor
Contoh ini mengonfigurasi routing_field=cluster_id, sehingga sistem dapat membaca Slice dari bidang tingkat atas dokumen tanpa memerlukan _slice:
PUT /products/_doc/product-1
{
"cluster_id": "cluster-a",
"name": "example-product",
"embedding": [0.92, 0.08]
}Anda juga dapat secara eksplisit memberikan _slice=cluster-a, atau menggunakan routing=cluster-a dengan API yang kompatibel. Saat Anda secara eksplisit menentukan Slice, nilainya harus sesuai dengan nilai bidang routing_field dalam dokumen (dalam contoh ini, cluster_id). Jika tidak, HTTP 400 dikembalikan. Pembaruan dengan skrip tidak didukung saat routing_field dikonfigurasi.
Langkah 4: Pemilihan Slice kandidat otomatis
Setelah menulis data, tunggu minimal satu siklus Refresh otomatis sebelum menjalankan kueri berikut.
POST /products/_search?query_slice_count=64
{
"knn": {
"field": "embedding",
"query_vector": [0.91, 0.09],
"k": 10,
"num_candidates": 100
}
}Parameter untuk pemilihan Slice kandidat otomatis:
Parameter | Deskripsi |
| Batas atas Slice kandidat yang dipilih untuk kueri ini. Saat dihilangkan atau diatur ke |
| Mengganti jalur vektor kueri default Collection. Nilai yang didukung: |
query_slice_count tidak boleh melebihi max_query_slice_count. Jika tidak, HTTP 400 dikembalikan.
Saat ini, hanya query_vector inline dalam badan permintaan yang didukung untuk pemilihan Slice kandidat otomatis. API Count tidak secara otomatis memilih Slice kandidat. Anda harus secara eksplisit memberikan _slice.
Verifikasi keberhasilan dan pembersihan
Indikator keberhasilan — Respons KNN mengembalikan
hitsyang diurutkan berdasarkan skor kemiripan. Centroid klaster yang terdaftar muncul dalam responsGET /_slice_collection/products/slices.Titik kegagalan umum — Jika respons KNN kosong, verifikasi bahwa
refresh_intervaltelah berlalu dan dimensi vektor kueri sesuai denganconfig.vector_dims. Jika pendaftaran mengembalikan HTTP200tetapi Slice tidak muncul, periksaitems[].resultuntuk entrifaileddan alasan error terkait.Bersihkan data contoh — Untuk menghapus Collection contoh, lihat Hapus Collection.
Kelola Collection dan Slice
Bagian ini berlaku untuk membuat dataset logis baru atau menyesuaikan parameter kapasitas dan metode alokasi Pendukung untuk Slice berikutnya. Parameter kapasitas menentukan alokasi Slice baru dan tidak menyeimbangkan ulang data yang ada.
Parameter pembuatan
API untuk membuat Collection adalah:
PUT /_slice_collection/{collection}Parameter kueri:
Parameter | Deskripsi |
| Waktu maksimum untuk menunggu node master memproses permintaan. |
| Waktu maksimum untuk menunggu konfirmasi pembuatan. |
Parameter badan permintaan adalah sebagai berikut.
Parameter | Nilai default | Deskripsi |
|
| Mode Collection. Mendukung mode namespace ( |
|
| Apakah akan mendaftarkan Slice secara otomatis saat permintaan tulis menemui Slice yang belum ada. |
|
| Batas kapasitas lunak untuk setiap shard utama menerima Slice baru. |
|
| Ambang batas penyimpanan lunak untuk setiap shard utama menerima Slice baru. Atur ke |
|
| Strategi pemilihan Pendukung untuk Slice baru. |
|
| Pengaturan indeks Elasticsearch yang digunakan oleh Indeks Pendukung. |
|
| Pemetaan untuk Collection, yang diterapkan secara seragam ke semua Indeks Pendukung. |
|
| Alias Collection yang dibuat bersama Collection. Hanya parameter |
| Tidak ada | Konfigurasi untuk mode recall klaster vektor ( |
Jika Indeks Pendukung memiliki N shard utama, jumlah maksimum Slice yang dapat diterima berdasarkan batas hitungan saja adalah N × max_slices_per_shard. max_slices_per_shard dan max_storage_per_shard hanya menentukan apakah Slice baru berikutnya terus dialokasikan ke Pendukung ini:
Setelah salah satu ambang batas tercapai, sistem memilih atau membuat Pendukung lain untuk menampung Slice baru.
Slice yang ada dapat terus menerima tulisan.
Mengubah ambang batas tidak memigrasi Slice yang ada atau menyeimbangkan ulang data yang ada.
Dalam sebagian besar skenario, default
lastsudah cukup. Gunakanrandomhanya ketika beberapa Pendukung dapat menerima Slice baru secara bersamaan dan Anda ingin mendistribusikan Slice yang baru didaftarkan secara acak.
Lihat Collection
Lihat Collection tunggal:
GET /_slice_collection/knowledge-chunksLihat semua Collection:
GET /_slice_collectionAPI ini mendukung parameter kueri master_timeout.
{collection} mendukung nama yang dipisahkan koma dan wildcard. Nama eksak yang tidak ada mengembalikan HTTP 404. Wildcard tanpa kecocokan mengembalikan objek kosong.
Contoh respons:
{
"slice_collections": {
"knowledge-chunks": {
"collection_uuid": "opaque-system-id",
"lifecycle_state": "active",
"max_slices_per_shard": 200,
"max_storage_per_shard": "50gb",
"backing_allocation_strategy": "last",
"future_only_settings": {},
"auto_create_slice": true,
"slice_strategy": "exact",
"max_managed_backing_generation": 0,
"aliases": {}
}
}
}Respons mungkin juga berisi pengenal yang dikelola sistem dan field generation. Aplikasi harus memperlakukannya sebagai informasi opak dan tidak menggunakannya untuk membangun nama Pendukung atau mengimplementasikan logika bisnis.
Perbarui Collection
API ini digunakan untuk menyesuaikan strategi alokasi untuk Slice yang didaftarkan selanjutnya dan tidak memindahkan Slice yang ada.
Perbarui konfigurasi yang dapat diubah:
POST /_slice_collection/knowledge-chunks/_update
{
"max_slices_per_shard": 300,
"max_storage_per_shard": "80gb",
"backing_allocation_strategy": "last",
"auto_create_slice": false,
"settings": {
"apack.slice_collection.future.index.number_of_shards": 4
}
}Parameter kueri:
Parameter | Nilai default | Deskripsi |
|
| Menunggu node master memproses permintaan. |
|
| Menunggu konfirmasi pembaruan. |
|
| Saat diatur ke |
Field yang dapat diperbarui meliputi:
max_slices_per_shardmax_storage_per_shardbacking_allocation_strategyauto_create_slicePengaturan future-only yang diizinkan dalam
settingsPengaturan future-only hanya memengaruhi Pendukung yang dibuat setelahnya dan tidak memodifikasi Pendukung yang ada. Pengaturan yang diizinkan secara default adalah:
index.number_of_shardsindex.routing_partition_sizeindex.number_of_routing_shardsDalam permintaan
_update, pengaturan future-only harus menggunakan awalanapack.slice_collection.future.. Misalnya,index.number_of_shardssesuai denganapack.slice_collection.future.index.number_of_shards. Saat menulis, awalan datar digunakan. Saat membaca kembali melaluiGET /_slice_collection/{collection}, pengaturan disajikan dalam struktur bersarang, misalnya,"future_only_settings": {"index": {"number_of_shards": "4"}}.
Respons yang berhasil adalah {"acknowledged":true}. acknowledged=false menunjukkan bahwa konfirmasi timeout, bukan pembaruan telah dikembalikan.
Perbarui pemetaan dan pengaturan dinamis
Perbarui pemetaan dengan menggunakan nama Collection:
PUT /knowledge-chunks/_mapping
{
"properties": {
"channel": { "type": "keyword" }
}
}Perbarui pengaturan indeks dinamis dengan menggunakan nama Collection:
PUT /knowledge-chunks/_settings
{
"index.refresh_interval": "5s"
}Pemetaan dan pengaturan indeks dinamis diterapkan ke semua Pendukung saat ini dan menjadi konfigurasi seragam untuk Pendukung berikutnya. Jangan memodifikasi Indeks Pendukung individual.
Daftarkan Slice
Saat memilih metode pendaftaran Slice, lihat tabel berikut.
Metode | Skenario yang Berlaku |
Pendaftaran otomatis saat tulis | Slice dalam mode namespace ( |
Daftarkan Slice tunggal secara eksplisit |
|
Pendaftaran batch | Provisioning penyewa batch, impor data batch, atau menyiapkan sejumlah besar Slice yang diketahui sebelum trafik tiba. |
Saat auto_create_slice=false, atau saat Anda ingin menyelesaikan persiapan resource sebelum menulis, Anda dapat mendaftarkan Slice secara eksplisit:
PUT /_slice_collection/knowledge-chunks/slices/tenant-cAPI ini mendukung parameter kueri master_timeout.
Contoh respons:
{
"acknowledged": true,
"errors": false,
"items": [
{
"slice_id": "tenant-c",
"result": "created",
"backing_index": ".sc-knowledge-chunks-...-00000"
}
]
}backing_index hanya untuk pengamatan dan troubleshooting dan tidak boleh digunakan sebagai target untuk permintaan aplikasi selanjutnya.
Daftarkan hingga 20480 Slice dengan nama unik sekaligus:
PUT /_slice_collection/knowledge-chunks/slices
{
"slices": [
"tenant-d",
{ "slice": "tenant-e" },
{ "slice_id": "tenant-f" }
]
}API ini mendukung parameter kueri master_timeout. Ketiga format dapat dicampur dalam permintaan yang sama.
Pendaftaran batch mungkin sebagian berhasil. result setiap item mungkin created, updated, noop, atau failed. errors tingkat atas adalah true selama ada item yang gagal. Saat nama Slice tidak valid (misalnya, berisi :, dimulai dengan karakter non-alfanumerik, menggunakan nilai terpesan _all, atau melebihi batas panjang), API pendaftaran juga mengembalikan HTTP 200 dan memberikan failed dan alasan error dalam item yang sesuai.
Daftar Slice dengan paginasi
GET /_slice_collection/knowledge-chunks/slices?prefix=tenant-&page_size=100Parameter | Nilai default | Deskripsi |
|
| Jumlah hasil per halaman. Nilai valid: |
| Tidak ada |
|
| Tidak ada | Hanya mengembalikan Slice yang namanya dimulai dengan teks yang ditentukan. |
Hasil dikembalikan dalam urutan menaik berdasarkan nama Slice. Jika Slice ditambahkan atau dihapus secara bersamaan selama paginasi, hasilnya konsisten lemah. Pertahankan prefix yang sama saat melanjutkan paginasi.
Hapus Slice
DELETE /_slice_collection/knowledge-chunks/slices/tenant-cParameter kueri:
Parameter | Deskripsi |
| Waktu maksimum untuk menunggu node master memproses permintaan. |
| Waktu maksimum untuk menunggu konfirmasi penghapusan. |
Respons berhasil:
{
"acknowledged": true
}Setelah Slice dihapus, Slice dengan nama yang sama dapat didaftarkan ulang. Data baru diisolasi dari data lama yang menunggu pembersihan di latar belakang. Catatan:
Setelah Slice dihapus, kueri yang menentukan nama Slice mengembalikan HTTP
404(resource_not_found_exception) alih-alih hasil kosong.Kueri cakupan penuh menggunakan
_slice=_allmungkin sementara mengembalikan data lama sebelum pembersihan fisik selesai.Respons penghapusan tidak menunjukkan bahwa ruang penyimpanan telah dilepaskan.
Tulis, baca, dan kueri data
Tulis dan baca data
Collection menggunakan kembali API dokumen standar Elasticsearch dan menentukan namespace atau klaster vektor melalui _slice. API umum adalah sebagai berikut.
Metode akses | Skenario yang Berlaku |
API dokumen tunggal | Operasi CRUD real-time saat ID dokumen dan Slice diketahui. |
Bulk | Menulis log atau konten basis pengetahuan secara batch, atau menulis ke beberapa Slice dalam satu batch. |
MGet | Membaca dokumen dari Slice yang sama atau berbeda dalam satu permintaan saat beberapa ID dokumen diketahui. |
Reindex | Migrasi data antara indeks reguler dan Collection, atau antara Collection berbeda. |
Operasi | API |
Tulis atau timpa dokumen |
|
Buat ID dokumen otomatis |
|
Buat dokumen saja |
|
Ambil dokumen |
|
Periksa apakah dokumen ada |
|
Ambil |
|
Perbarui dokumen |
|
Hapus dokumen |
|
Aturan:
Permintaan dokumen tunggal hanya dapat menentukan satu Slice. Nilai yang dipisahkan koma dan
_alltidak diizinkan.index,create, danupdatedapat mendaftarkan Slice yang belum ada secara otomatis saatauto_create_slice=true. Operasi baca dan hapus tidak mendaftarkan Slice secara otomatis. Menentukan Slice yang belum ada mengembalikan HTTP404.Beberapa API dokumen dan kueri dapat menggunakan
routinguntuk merepresentasikan Slice logis. Untuk cakupan yang didukung dan aturan konflik, lihat Parameter kompatibilitas routing.Setiap permintaan Bulk dapat mendaftarkan otomatis hingga
512Slice yang hilang berbeda. Slice yang ada tidak dihitung terhadap batas ini.wait_for_active_shardstidak digunakan sebagai kondisi untuk menunggu replika dalam pipeline tulis AI Engine Edition. Untuk menunggu dokumen dapat dicari, gunakanrefresh=wait_for.Bidang
dense_vectortidak termasuk dalam_sourceyang dikembalikan secara default. BaikGET /{collection}/_doc/{id}maupunGET /{collection}/_source/{id}tidak mengembalikan nilai vektor. Untuk mengembalikannya, tentukan secara eksplisit_source_includes.
Refresh dan visibilitas kueri
Permintaan tulis yang berhasil menunjukkan bahwa data telah dipersisten, bukan bahwa data dapat dikueri oleh node pencarian. AI Engine Edition menggunakan arsitektur tanpa status. Refresh memerlukan node indeks untuk menghasilkan dan menerbitkan Commit baru, lalu node pencarian memuat versi yang dapat dicari. Ini adalah operasi lintas-node terdistribusi dengan overhead lebih tinggi daripada Refresh lokal di Elasticsearch stateful tradisional.
Anda dapat mengkueri dan menyesuaikan index.refresh_interval melalui pengaturan Collection. Nilai saat ini dapat dilihat melalui GET /{collection}/_settings. Interval Refresh yang lebih pendek meningkatkan overhead resource. Untuk produksi, atur ke 5s atau lebih tinggi. Jika Anda memiliki persyaratan visibilitas latensi rendah, sesuaikan nilai berdasarkan beban kerja bisnis Anda. Nilai efektif aktual didasarkan pada pengaturan Collection saat ini. Refresh otomatis dapat dinonaktifkan dengan mengatur nilai ke -1. Sebelum memperpendek interval ini, evaluasi frekuensi penerbitan Commit, throughput tulis, dan I/O penyimpanan objek.
Pilih salah satu metode berikut berdasarkan persyaratan bisnis Anda untuk visibilitas kueri:
Metode | Skenario yang Berlaku | Catatan |
Abaikan | Skema prioritas throughput seperti impor Bulk berkelanjutan dan penulisan log. | Tulis mengembalikan segera. Refresh latar belakang membuat data tersedia dalam hasil kueri. |
| Skema baca-setelah-tulis di mana kueri harus dilakukan segera setelah menulis. | Menunggu Refresh terdistribusi berikutnya tanpa memperpendek |
| Tulisan frekuensi rendah yang benar-benar memerlukan visibilitas segera. | Memicu Refresh terdistribusi segera. Respons berisi |
| Operasi frekuensi rendah atau konfirmasi visibilitas terpadu setelah impor batch. | Me-refresh semua Pendukung Collection saat ini. Anda tidak dapat me-refresh Slice tunggal melalui |
index.refresh_interval=-1 menonaktifkan Refresh otomatis. Dalam kasus ini, tulisan menggunakan refresh=wait_for akan menunggu tanpa batas hingga permintaan lain memicu Refresh eksplisit. Jangan menggabungkan pengaturan ini tanpa proses Refresh eksplisit. Untuk produksi, saat diperlukan baca-setelah-tulis, pilih antara menunggu Refresh otomatis atau Refresh eksplisit berdasarkan persyaratan latensi bisnis Anda, dan evaluasi overhead Refresh terdistribusi. Refresh hanya mengatasi visibilitas kueri. Ini tidak berarti semua replika kueri tersedia dan tidak dapat menggantikan probe kueri dan pemeriksaan ketersediaan tinggi.
Bulk
Setiap item Bulk dapat memberikan _slice sendiri dalam metadata aksi, seperti yang ditunjukkan dalam contoh mulai cepat. Saat semua item dalam batch ditulis ke Slice yang sama, Anda dapat memberikan nilai default di URL:
POST /knowledge-chunks/_bulk?_slice=tenant-a
{ "index": { "_id": "chunk-2001" } }
{ "tenant_id": "tenant-a", "document_id": "doc-account-security", "title": "Account security settings", "content": "Administrators can enable multi-factor authentication on the security settings page." }_slice dalam item dapat mengganti nilai default URL. Mode namespace tidak menurunkan Slice dari bidang dokumen. Bahkan jika badan dokumen berisi bidang tenant_id, lokasi tulis aktual tetap ditentukan oleh _slice. Untuk penanganan error, lihat Konvensi API umum.
Multi Get
MGet cocok untuk membaca beberapa dokumen dengan ID yang diketahui sekaligus. Setiap item dapat mengakses Slice berbeda:
POST /knowledge-chunks/_mget
{
"docs": [
{ "_id": "chunk-1001", "_slice": "tenant-a" },
{ "_id": "chunk-1002", "_slice": "tenant-b" }
]
}_slice di URL dapat berfungsi sebagai nilai default. Setiap item dapat mengganti nilai default. Setiap item pada akhirnya harus diselesaikan ke satu Slice.
Reindex
Reindex cocok untuk migrasi data antara indeks reguler dan Collection, atau antara Collection berbeda. Untuk menyalin Slice dalam Collection yang sama, gunakan Copy Slice.
Saat sumber adalah Collection, Anda harus secara eksplisit menentukan source._slice dalam badan permintaan. Jika tidak, HTTP 400 dikembalikan. Saat tujuan adalah Collection, hanya satu Slice tujuan yang dapat ditentukan, dan nilainya harus menggunakan format ={slice}:
POST /_reindex
{
"source": {
"index": "source-knowledge-chunks",
"_slice": "tenant-a,tenant-b"
},
"dest": {
"index": "target-knowledge-chunks",
"_slice": "=tenant-archive"
}
}Slice tujuan didaftarkan secara otomatis jika belum ada. Parameter slices tingkat atas merepresentasikan paralelisme Reindex Elasticsearch dan tidak terkait dengan jumlah Slice bisnis. Saat salah satu sisi adalah Collection, Reindex tidak mendukung skrip. Saat Collection adalah tujuan, pipeline ingest eksplisit tidak didukung.
Kueri data
Kueri Collection terus menggunakan Elasticsearch Query DSL. Bagian ini hanya mencakup cakupan kueri Slice yang ditambahkan oleh AI Engine Edition. Untuk Query DSL dan kemampuan kueri yang tidak tercantum dalam panduan ini, cakupan yang didukung aktual dari instans 9.99.0 yang berlaku.
Menentukan _slice secara eksplisit dalam kueri berlaku untuk kedua mode. Mode namespace biasanya memerlukan cakupan kueri eksplisit. Kueri KNN dalam mode recall klaster vektor dapat secara otomatis memilih beberapa Slice kandidat. Untuk informasi lebih lanjut, lihat Mode recall klaster vektor: Pemilihan Slice kandidat otomatis.
Tentukan cakupan kueri
Cakupan kueri | Skenario yang Berlaku | Contoh |
Slice tunggal | Kueri online single-tenant, mencari dalam namespace tertentu |
|
Beberapa Slice | Kueri agregat untuk sejumlah kecil penyewa yang diketahui, kueri lintas-namespace |
|
Semua Irisan | Analisis offline, auditing, atau kueri operasi cakupan penuh eksplisit |
|
Kueri tunggal dapat menentukan hingga 1024 Slice.
Selain batas jumlah Slice, perhatikan batas panjang baris permintaan HTTP 4096 byte. Saat Anda menggunakan nama Slice panjang, too_long_http_line_exception mungkin dikembalikan sebelum mencapai 1024. Dalam kasus ini, perpendek nama Slice, bagi menjadi beberapa kueri, atau gunakan _slice=_all.
Saat daftar kueri mungkin berisi Slice yang belum ada, gunakan:
GET /knowledge-chunks/_search?_slice=tenant-a,tenant-b&ignore_missing_slice=trueTanpa parameter ini, seluruh permintaan mengembalikan HTTP 404 jika ada Slice yang tidak ada. Saat digunakan dengan _slice=_all, ignore_missing_slice tidak berpengaruh dan diabaikan diam-diam.
API kueri berikut juga mendukung parameter cakupan Slice yang sama:
Search dan Count
Multi search
Search template
Async search
Validate query
Search shards
Update by query dan Delete by query
Update by query, Delete by query, dan Reindex menulis atau menghapus data dan harus secara eksplisit menentukan Slice target. Jika tidak ada Slice yang ditentukan, permintaan ditolak dan mengembalikan HTTP
400.
Kueri semua Slice saat _slice dihilangkan
Secara default, kueri dalam mode namespace memerlukan _slice eksplisit. Jika Anda ingin kueri hanya-baca tanpa _slice secara otomatis mengkueri semua Slice, aktifkan pengaturan kluster berikut:
PUT /_cluster/settings
{
"persistent": {
"apack.slice_collection.search.default_to_all_slices": true
}
}Setelah pengaturan ini diaktifkan, permintaan berikut setara dengan secara eksplisit menentukan _slice=_all:
GET /knowledge-chunks/_searchIni adalah pengaturan tingkat kluster yang memengaruhi semua Collection dan hanya berlaku untuk API kueri hanya-baca seperti Search dan Count. Kueri cakupan penuh biasanya memiliki overhead resource lebih tinggi daripada kueri berbasis Slice. Jika hanya beberapa permintaan yang perlu mengkueri semua Slice, terus gunakan _slice=_all secara eksplisit.
Optimalkan pencarian teks dalam Slice tertentu
Jika pencarian kata kunci atau teks lengkap biasanya hanya mengkueri satu atau beberapa Slice tertentu, Anda dapat mengaktifkan index.sliced_postings.enabled saat membuat Collection untuk mengurangi rentang data indeks terbalik yang perlu diakses kueri:
PUT /_slice_collection/knowledge-chunks
{
"settings": {
"index.sliced_postings.enabled": true
}
}Pengaturan ini default ke false dan hanya dapat dikonfigurasi selama pembuatan Collection. Tidak dapat diubah setelah pembuatan. Setelah mengaktifkan pengaturan ini, Anda masih dapat menggunakan _slice=_all untuk mengkueri semua Slice, tetapi Anda tidak akan mendapatkan manfaat optimasi utama dari membatasi cakupan kueri Slice. Jika bisnis Anda terutama melakukan pencarian teks global, pertahankan default dinonaktifkan.
Setelah mengaktifkan pengaturan ini, bidang completion tidak didukung, dan mengatur fielddata=true untuk bidang text tidak didukung.
Praktik terbaik kueri
Saat menggunakan mode namespace, atau saat permintaan tidak mendukung pemilihan Slice kandidat otomatis, tentukan secara eksplisit satu atau beberapa Slice. Hindari menggunakan
_slice=_allsebagai metode akses default.Saat menggunakan mode recall klaster vektor, tentukan
query_slice_countmelalui pengujian tingkat recall dan overhead kueri. Jangan meningkatkan jumlah Slice kandidat secara membabi buta.Overhead kueri
_allbertambah seiring jumlah Pendukung dan shard. Evaluasi cakupan kueri, timeout, dan beban kluster sebelum eksekusi.Gunakan
ignore_missing_slice=trueuntuk Slice opsional yang mungkin tidak ada. Jangan mencoba ulang seluruh batch karena satu Slice yang hilang.Aplikasi harus menggunakan Slice yang konsisten saat menulis, membaca, memperbarui, dan menghapus dokumen yang sama.
Fitur lanjutan
Warm Slice cache
API _warm_slice memuat data yang mungkin diakses oleh kueri berikutnya ke Slice tertentu dari penyimpanan objek ke cache bersama di node pencarian, mengurangi latensi kueri pertama untuk data dingin. Cakupan pemanasan mencakup vektor DiskBBQ, data indeks terbalik terkait Slice, nilai dokumen, dan bidang yang disimpan, serta mencakup semua replika yang dapat dicari dari shard tempat Slice berada.
Pemanasan hanya untuk optimasi cache. Ini hanya memengaruhi kecepatan akses berikutnya, tidak mengubah hasil kueri, dan tidak menjamin berapa lama data tetap dalam cache.
Kasus penggunaan pemanasan:
Pengguna akan membuka basis pengetahuan, repositori kode, atau ruang memori Agent yang belum diakses dalam waktu lama. Anda dapat memanaskan Slice yang sesuai sebelum kueri pertama.
Setelah impor batch atau migrasi data selesai, Anda dapat memanaskan Slice yang akan diaktifkan sebelum mengalihkan trafik kueri.
Namespace tertentu diketahui mengalami puncak akses selama periode waktu tertentu. Anda dapat memanaskan Slice ini terlebih dahulu.
Pemanasan aktif tidak disarankan saat akses data tidak dapat diprediksi, saat sejumlah besar Slice perlu dipanaskan sekaligus, atau saat Slice target sudah merupakan data panas. Pemanasan skala besar mengonsumsi penyimpanan objek dan sumber daya jaringan, cache, dan komputasi node pencarian. Ini juga dapat mengeluarkan data panas yang ada dari cache.
Mulai pemanasan async
Secara default, tugas pemanasan dikirim secara asinkron:
POST /knowledge-chunks/_warm_slice?_slice=tenant-aPermintaan mengembalikan HTTP 200. Field status dalam badan respons adalah ACCEPTED, dan respons mencakup ID tugas untuk tugas pemanasan ini:
{
"status": "ACCEPTED",
"message": "cache warm hint accepted",
"task": "{nodeId}:{taskId}"
}Gunakan API berikut untuk mengkueri tugas yang sedang berjalan:
GET /_tasks/{nodeId}:{taskId}Secara default, hasil tugas tidak dipertahankan setelah selesai. Untuk mengkueri hasil tugas setelah selesai, atur store_result=true saat mengirim tugas:
POST /knowledge-chunks/_warm_slice?_slice=tenant-a&store_result=trueMode async tidak memvalidasi apakah Slice target ada. Memulai pemanasan async untuk Slice yang tidak ada juga mengembalikan ACCEPTED, tetapi tidak ada pemanasan yang dilakukan dan tidak ada error yang dikembalikan. Skrip pemanasan batch harus terlebih dahulu mengonfirmasi daftar Slice atau menggunakan mode sinkron (mode sinkron mengembalikan HTTP 404 untuk Slice yang tidak ada).
Tunggu pemanasan selesai
Untuk langsung mendapatkan statistik pemanasan, tunggu secara sinkron:
POST /knowledge-chunks/_warm_slice?_slice=tenant-a&wait_for_completion=true&timeout=60sParameter kueri:
Parameter | Wajib | Nilai default | Deskripsi |
| Ya | Tidak ada | Slice yang akan dipanaskan. Saat kedua parameter hadir, nilainya harus sama. Jika tidak, HTTP |
| Tidak |
| Apakah akan menunggu semua replika yang dapat dicari mengembalikan hasil pemanasan. |
| Tidak |
| Apakah akan mempertahankan hasil setelah tugas selesai untuk dikueri melalui API Tasks. |
| Tidak | Tidak ada | Waktu maksimum untuk menunggu respons shard, misalnya, |
Respons sinkron mencakup informasi _shards standar dan field statistik berikut:
Field | Deskripsi |
| Jumlah segmen dalam data yang dapat dicari saat ini yang cocok dengan Slice. |
| Jumlah dokumen yang dibaca saat merencanakan cakupan pemanasan. |
| Jumlah rentang data yang diminta untuk pemanasan. |
| Jumlah rentang data yang dipanaskan. |
| Jumlah rentang data yang dilewati karena file digabung atau dihapus. |
| Jumlah byte yang diminta untuk pemanasan. |
Perhatikan hal berikut saat menggunakan API ini:
Setiap permintaan hanya dapat menentukan satu Collection dan satu Slice. Slice yang hilang tidak didaftarkan secara otomatis.
_alltidak dapat digunakan.Permintaan pemanasan bersamaan untuk replika shard kueri dan Slice yang sama digabung. Anda tidak perlu mengirim permintaan duplikat.
Pemanasan hanya memproses data yang dapat dicari pada saat permintaan dikirim. Data baru yang menjadi dapat dicari setelahnya tidak termasuk dalam hasil pemanasan ini.
ranges_skippedlebih besar dari0tidak selalu menunjukkan kegagalan pemanasan. Saat file digabung atau dihapus selama pemanasan, rentang yang sesuai dilewati.Pemanasan mengonsumsi bandwidth baca penyimpanan objek dan sumber daya node pencarian. Untuk produksi, gunakan mode async default dan kendalikan jumlah Slice yang dipanaskan secara bersamaan.
Saat antrian pemanasan penuh, server mungkin menolak permintaan baru. Klien harus menggunakan backoff dengan batas atas. Jangan mencoba ulang semua Slice secara bersamaan segera.
Pengindeksan vektor DiskBBQ
DiskBBQ sesuai dengan tipe indeks bbq_disk dari dense_vector. Ini adalah kemampuan pengindeksan vektor yang digunakan dalam shard, bukan mode Collection ketiga. Baik mode namespace maupun mode recall klaster vektor dapat menggunakan DiskBBQ. Bagian ini menjelaskan metode konfigurasi dan kueri. Untuk referensi kinerja AI Engine Edition, lihat Ikhtisar fitur.
Kasus penggunaan DiskBBQ:
Skala vektor besar, dan Anda ingin mengurangi tekanan memori resident melalui pengindeksan vektor native disk.
Anda dapat menggunakan set data evaluasi bisnis untuk menyetel keseimbangan antara tingkat recall, latensi kueri, dan overhead baca data.
DiskBBQ tidak disarankan sebagai pendekatan default saat dataset kecil, hasil tetangga terdekat eksak diperlukan, atau evaluasi tingkat recall belum selesai.
Konfigurasikan pemetaan
Contoh mulai cepat mode namespace telah mengonfigurasi DiskBBQ saat membuat Collection. Untuk Collection lain yang belum memiliki bidang vektor, Anda dapat menambahkan bidang dengan menggunakan API Mapping:
PUT /{collection}/_mapping
{
"properties": {
"embedding": {
"type": "dense_vector",
"dims": 4,
"index": true,
"similarity": "cosine",
"index_options": {
"type": "bbq_disk"
}
}
}
}Saat Anda hanya menentukan "type": "bbq_disk", server mengisi nilai default index_options yang tersisa. Anda dapat melihat konfigurasi efektif aktual dengan membaca kembali pemetaan, di mana rescore_vector.oversample diaktifkan secara default:
{
"index_options": {
"type": "bbq_disk",
"cluster_size": 384,
"flat_index_threshold": -1,
"default_visit_percentage": 0.0,
"rescore_vector": { "oversample": 3.0 },
"bits": 1
}
}Dimensi vektor dan metrik kemiripan harus sesuai dengan model yang digunakan untuk menghasilkan vektor. Jika Anda perlu mengganti tipe indeks untuk bidang vektor yang ada, buat Collection target, konfigurasikan pemetaan baru, lalu gunakan Reindex untuk migrasi data dan evaluasi ulang.
Jalankan kueri KNN
Permintaan berikut didasarkan pada data dari contoh mulai cepat mode namespace dan menggunakan visit_percentage untuk menyesuaikan rentang akses DiskBBQ dalam Slice yang ditentukan:
POST /knowledge-chunks/_search?_slice=tenant-a
{
"knn": {
"field": "embedding",
"query_vector": [0.80, 0.12, 0.05, 0.03],
"k": 10,
"visit_percentage": 10.0
},
"_source": ["document_id", "title", "content"]
}Parameter | Deskripsi |
| Jumlah tetangga terdekat yang akan dikembalikan. |
| Persentase vektor yang akan dikunjungi per shard. Nilai valid: |
| Digunakan untuk menurunkan rentang akses kandidat saat |
| Menambahkan pemfilteran terstruktur untuk mengurangi kandidat yang tidak relevan. |
| Menilai ulang kandidat yang diperoleh dari pengambilan terkuantisasi menggunakan vektor asli. Ini dapat mengganti nilai default |
DiskBBQ dan mode recall klaster vektor beroperasi pada level berbeda: mode recall klaster vektor pertama-tama memilih Slice kandidat dari semua klaster vektor, lalu DiskBBQ mengeksekusi KNN dalam shard fisik Slice tersebut. Keduanya dapat digunakan bersama, tetapi Anda harus mengontrol query_slice_count dan rentang akses vektor secara terpisah untuk menghindari cakupan kueri berlebihan.
Alias Collection
Alias Collection menyediakan aplikasi dengan nama akses stabil. Alias dapat digunakan untuk mengkueri beberapa Collection secara seragam atau mengalihkan target tulis. Anda dapat menambahkan Alias saat membuat Collection melalui field aliases, atau mengelola Alias dengan menggunakan API Elasticsearch standar _aliases.
Kasus penggunaan Alias Collection:
Migrasi versi: Aplikasi selalu mengakses Alias tetap. Setelah persiapan data selesai, alihkan target tulis dari Collection lama ke Collection baru.
Kueri multi-Collection: Kueri beberapa Collection yang menggunakan
slice_strategyyang sama melalui satu Alias.Decoupling aplikasi: Konfigurasi bisnis hanya menyimpan Alias dan tidak bergantung langsung pada nama Collection yang berisi versi atau tanggal.
Alias Collection tidak berlaku jika bisnis Anda bergantung pada
filterAlias ataurouting, atau jika Anda ingin menyertakan indeks reguler dan Collection dalam Alias yang sama.
Contoh berikut mengasumsikan bahwa knowledge-chunks-v1 dan knowledge-chunks-v2 keduanya adalah Collection yang menggunakan mode namespace (exact). Tambahkan keduanya ke Alias yang sama dan atur knowledge-chunks-v2 sebagai target tulis:
POST /_aliases
{
"actions": [
{
"add": {
"index": "knowledge-chunks-v1",
"alias": "knowledge-chunks-current"
}
},
{
"add": {
"index": "knowledge-chunks-v2",
"alias": "knowledge-chunks-current",
"is_write_index": true
}
}
]
}Lihat Alias:
GET /_alias/knowledge-chunks-currentHapus anggota dari Alias:
POST /_aliases
{
"actions": [
{
"remove": {
"index": "knowledge-chunks-v1",
"alias": "knowledge-chunks-current"
}
}
]
}Perhatikan hal berikut saat menggunakan Alias:
Anggota Alias yang sama harus menggunakan
slice_strategyyang sama. Anggota yang menggunakan mode recall klaster vektor (vector_cluster) juga harus menggunakan dimensi vektor yang sama.Saat Alias multi-anggota digunakan untuk tulis, tepat satu anggota harus memiliki
is_write_index=true.API seperti Search, Count, dan Bulk dapat mengakses Alias multi-anggota berdasarkan semantik Alias.
GET dokumen tunggal dan setiap item dalam MGet harus diselesaikan secara unik ke satu Collection. Oleh karena itu, hanya Alias single-anggota yang dapat digunakan.
filter,routing,index_routing,search_routing, , danremove_indexsaat ini tidak didukung untuk Alias.Saat Anda mengkueri Alias multi-anggota, Slice target harus ada di semua Collection anggota. Jika tidak, HTTP
404dikembalikan. Selama migrasi versi, set Slice Collection lama dan baru biasanya berbeda. Dalam kasus ini, secara eksplisit sertakanignore_missing_slice=true, misalnya,GET /knowledge-chunks-current/_search?_slice=tenant-a&ignore_missing_slice=true, sehingga permintaan melewati anggota yang hilang dan mengembalikan normal.
Salin Slice
Salin Slice menyalin dokumen yang dapat direplikasi dari satu Slice ke Slice lain dalam Collection yang sama secara online. Ini cocok untuk migrasi data, bukan untuk snapshot titik-waktu, backup, atau pengalihan trafik atomik.
Kasus penggunaan Salin Slice:
Salin data pengujian atau verifikasi untuk penyewa sambil mempertahankan pemetaan Collection yang sama dengan Slice sumber.
Siapkan namespace baru dalam Collection yang sama. Setelah Salin selesai dan diverifikasi, lapisan aplikasi mengalihkan nama akses.
Lakukan migrasi data online untuk Slice sambil menjaga Slice sumber dan tujuan tetap dapat dibaca dan ditulis.
Tulisan mungkin masih terjadi selama Salin. Oleh karena itu, hasilnya bukan snapshot titik-waktu dari sumber. Untuk backup, pemulihan bencana, snapshot konsisten ketat, atau pengalihan trafik atomik, jangan gunakan Salin Slice.
Mulai Salin async
POST /_slice_collection/knowledge-chunks/slices/tenant-a/_copy/tenant-a-copy?wait_for_completion=false
{
"workers": 8,
"batch_size": 5000,
"requests_per_second": -1
}Parameter kueri:
Parameter | Nilai default | Deskripsi |
|
| Apakah akan menunggu Salin selesai. Atur ke |
|
| Waktu tunggu untuk permintaan HTTP saat ini. Timeout tidak menghentikan Salin latar belakang. |
Parameter badan permintaan semuanya opsional:
Parameter | Nilai default | Nilai valid atau deskripsi |
| Setengah jumlah prosesor pada node eksekusi, dibulatkan ke atas |
|
|
|
|
|
|
|
Permintaan async mengembalikan HTTP 202 Accepted. Simpan copy_id dari respons dan sebaiknya gunakan status_url dan cancel_url yang dikembalikan oleh server:
{
"copy_id": "tenant-a-copy:1h",
"completed": false,
"timed_out": false,
"state": "RUNNING",
"source": "tenant-a",
"target": "tenant-a-copy",
"workers": 8,
"progress": { "total": 0, "created": 0, "version_conflicts": 0 },
"status_url": "/_slice_collection/knowledge-chunks/_copy/tenant-a-copy%3A1h",
"cancel_url": "/_slice_collection/knowledge-chunks/_copy/tenant-a-copy%3A1h/_cancel"
}copy_id terdiri dari nama Slice tujuan dan akhiran yang dihasilkan sistem yang berisi karakter terpesan URL seperti titik dua. Saat Anda membangun URL kueri status secara manual, encoding URL diperlukan. Gunakan status_url dan cancel_url langsung dari respons.
Respons untuk Salin yang sedang berjalan mencakup objek progress. Setelah Salin berakhir, field ini menjadi result dan mencakup field took (dalam milidetik) yang merepresentasikan waktu yang berlalu. Field version_conflicts yang relevan dengan badan dokumen terletak di progress atau result.
Saat menggunakan default wait_for_completion=true, jika Salin selesai dalam timeout, API mengembalikan HTTP 200. Jika waktu tunggu habis, API mengembalikan HTTP 202 dengan timed_out=true, dan Salin latar belakang berlanjut.
Kueri status Salin
GET /_slice_collection/knowledge-chunks/_copy/{copy_id}state dapat berupa RUNNING, CANCELLING, SUCCEEDED, FAILED, atau CANCELLED. Kueri status mungkin mengembalikan HTTP 200 bahkan saat state=FAILED. Pemanggil harus memeriksa state dan error.
Status selesai dipertahankan selama 1d secara default. Setelah itu, kueri mungkin mengembalikan HTTP 404. Pemanggil tidak boleh menggunakan API status Salin sebagai penyimpanan audit jangka panjang.
Periode retensi dikontrol oleh pengaturan kluster dinamis apack.slice_collection.copy.reservation_retention. Nilai default adalah 1d dan nilai minimum adalah 1h:
PUT /_cluster/settings
{
"persistent": {
"apack.slice_collection.copy.reservation_retention": "1d"
}
}Batalkan Salin
POST /_slice_collection/knowledge-chunks/_copy/{copy_id}/_cancelPembatalan tidak menghapus Slice tujuan atau dokumen yang telah disalin. Pembatalan bersifat asinkron: API mengembalikan HTTP 202 dan state berubah menjadi CANCELLING. Terus polling status hingga state berubah menjadi CANCELLED. Pada titik itu, cancel_url dalam respons menghilang.
Semantik data Salin
Slice sumber dan tujuan harus termasuk dalam Collection yang sama dan tidak boleh memiliki nama yang sama.
Slice tujuan didaftarkan secara otomatis jika belum ada, bahkan jika
auto_create_slice=falseCollection.Saat Slice tujuan sudah berisi dokumen yang dapat dicari, permintaan inisiasi Salin ditolak dan mengembalikan HTTP
409dengan tipe errortarget_lifecycle_conflict.Salin menggunakan tulis hanya-buat dan tidak menimpa dokumen yang ada dengan
_idyang sama di Slice tujuan. Konflik dihitung dalamversion_conflicts, dan dokumen lain terus disalin. Setelah Salin selesai, periksa field ini dan tangani data ID yang sama berdasarkan persyaratan bisnis Anda.Kedua Slice sumber dan tujuan dapat dibaca dan ditulis selama Salin. Oleh karena itu, hasilnya bukan snapshot titik-waktu atomik dari Slice sumber.
Slice sumber harus mempertahankan
_sourcelengkap untuk merekonstruksi dokumen. Salin ditolak saat_sourcedinonaktifkan,_sourcesintetis digunakan,_source.includestidak kosong dikonfigurasi, atau_source.excludestidak dapat dibuktikan aman.Salin tidak didukung saat pemetaan Slice sumber berisi bidang inferensi seperti
semantic_text.Pipeline ingest default/akhir tidak dieksekusi ulang selama Salin.
Dokumen diterapkan ulang terhadap pemetaan saat ini dari tujuan. Misalnya, multi-bidang yang baru ditambahkan akan dihasilkan di tujuan.
Untuk mengalihkan trafik bisnis setelah Salin selesai, periksa status dan hasil Salin di lapisan aplikasi, lalu alihkan ke Slice tujuan melalui konfigurasi bisnis.
Operasional dan izin
Pemantauan kluster
Di panel navigasi kiri halaman detail instans di Konsol, pilih Monitoring and Logs > Cluster Monitoring untuk melihat metrik operasional instans. Saat mengonfigurasi ambang batas peringatan, atur berdasarkan SLO bisnis Anda dan garis dasar uji stres. Nama metrik spesifik dan titik masuk peringatan didasarkan pada Konsol.
Tabel berikut mencantumkan pemetaan antara target pengamatan umum dan metrik Konsol.
Target pengamatan | Metrik Konsol | Dimensi |
Throughput tulis | QPS tulis kluster | Tingkat kluster |
Latensi tulis | Latensi tulis rata-rata kluster | Tingkat kluster |
Throughput kueri | QPS kueri kluster | Tingkat kluster |
Latensi kueri | Latensi pencarian rata-rata kluster | Tingkat kluster |
Pemanfaatan CPU | Pemanfaatan CPU node (bisnis ES), Pemanfaatan CPU node (total) | Tingkat node |
Pemanfaatan memori heap | Pemanfaatan memori heap node (bisnis ES) | Tingkat node |
Penolakan | Tugas yang ditolak oleh kolam thread tulis, permintaan yang ditolak oleh kolam thread kueri | Dimensi kolam thread |
Halaman pemantauan kluster mengelompokkan metrik berdasarkan kategori dan tidak menyediakan pengelompokan berbasis role untuk node indeks dan node pencarian. Untuk mengamati dua jenis node secara terpisah, alihkan Tipe Resource ke Node Tertentu lalu filter berdasarkan nama node: nama node indeks berisi -index-, dan nama node pencarian berisi -search-. AI Engine Edition tidak memiliki node hangat. Anda hanya perlu memantau node indeks, node pencarian, dan metrik pemantauan yang sebenarnya disediakan oleh AI Engine Edition.
API CAT
API CAT cocok untuk pengamatan manual dan troubleshooting. Untuk ikhtisar harian, mulai dengan Collection. Saat terjadi anomali kapasitas atau shard, periksa Pendukung. Untuk menemukan distribusi data dan hitungan dokumen namespace tertentu, periksa Slice. Aplikasi tidak boleh bergantung pada output CAT untuk permintaan bisnis.
Tingkat pengamatan | API | Informasi utama |
Collection |
| Status siklus hidup, jumlah Pendukung, jumlah Slice, kapasitas, hitungan dokumen, dan ukuran penyimpanan |
Pendukung |
| Status kesehatan, apakah Slice baru diterima, shard, replika, kapasitas, dan hitungan shard tidak ditugaskan |
Slice |
| Pendukung Slice, shard target, jumlah replika, dan hitungan dokumen |
Kolom default:
Tingkat pengamatan | Kolom default |
Collection |
|
Pendukung |
|
Slice |
|
Parameter kueri umum:
Parameter | Deskripsi |
| Apakah akan menampilkan header. |
| Format output, seperti |
| Mengembalikan hanya kolom yang ditentukan. |
| Sortir berdasarkan kolom yang ditentukan. |
| Tentukan unit untuk ukuran penyimpanan. |
| Tampilkan kolom yang tersedia. |
CAT Slice juga mendukung backing={backing} untuk mempersempit cakupan ke nama Pendukung lengkap tertentu. Sortir di semua Pendukung berdasarkan docs.count adalah kueri berbiaya tinggi dan memerlukan pengaturan eksplisit allow_expensive_search=true.
Untuk pemrosesan terprogram, gunakan format=json dan tentukan kolom secara eksplisit:
GET /_cat/slice_collection/knowledge-chunks?format=json&h=collection,state,backings,slices,docs.count,pri.store.sizeAPI CAT dirancang untuk troubleshooting manual dan kueri operasi terbatas:
CAT Slice mengembalikan maksimal
10000baris. Saat batas terlampaui, header HTTPWarningmenunjukkan bahwa hasil tidak lengkap.Saat Anda memerlukan daftar Slice lengkap dan stabil terpaginasi, gunakan
GET /_slice_collection/{collection}/slices.docs.countadalah data near-real-time. Dokumen yang telah ditulis tetapi belum di-refresh mungkin tidak dihitung.pri.store.sizedanstore.sizemerepresentasikan ukuran data yang diindeks, yang tidak setara dengan penggunaan disk lokal pada node tanpa status. Ukuran ini juga tidak termasuk data historis dalam penyimpanan objek yang menunggu pembersihan.
Hapus Collection
API ini berlaku untuk mengambil data bisnis offline atau membersihkan contoh dalam panduan ini. Penghapusan menghapus konfigurasi Collection dan data yang dikelola sistem. Operasi ini tidak dapat dikembalikan. Untuk membersihkan hanya Slice tertentu, gunakan API hapus Slice.
DELETE /_slice_collection/knowledge-chunksParameter kueri:
Parameter | Deskripsi |
| Waktu maksimum untuk menunggu node master memproses permintaan. |
| Waktu maksimum untuk menunggu konfirmasi penghapusan. |
Respons berhasil:
{
"acknowledged": true
}{collection} mendukung nama yang dipisahkan koma. Secara default, wildcard * dan _all tidak diizinkan. Permintaan mengembalikan HTTP 400. Untuk menggunakannya, sesuaikan pengaturan kluster action.destructive_requires_name.
Penghapusan mengembalikan HTTP 409 saat operasi Salin Slice sedang berjalan atau dibatalkan. Pembatalan bersifat asinkron. Penghapusan masih akan ditolak hingga state berubah menjadi CANCELLED. Konfirmasi bahwa state=CANCELLED sebelum mengeksekusi penghapusan.
acknowledged=true menunjukkan bahwa penghapusan resource logis dan metadata telah dikonfirmasi. Indeks historis dan file Translog dalam penyimpanan objek diklaim kembali secara asinkron oleh proses latar belakang. Ruang fisik tidak dijamin dilepaskan segera saat respons dikembalikan.
Izin Koleksi
Operasi | Izin yang diperlukan |
Buat, perbarui, atau hapus Collection atau Slice | Izin indeks |
Panggil | Izin indeks |
Gunakan | Izin kluster |
Panggil | Izin indeks |
Mulai atau batalkan Copy Slice | Izin indeks |
Ambil Collection, daftar Slice, gunakan CAT, atau kueri status Salin | Izin indeks |
Baca/tulis dokumen dan kueri | Izin indeks |
Buat dan modifikasi Alias Collection | Izin indeks |
Saat mengonfigurasi role, nama indeks harus mencakup nama Collection dan wildcard Pendukung yang sesuai:
<collection>
.sc-<collection>-*Misalnya, jika nama Collection adalah knowledge-chunks, konfigurasikan knowledge-chunks dan .sc-knowledge-chunks-* dalam role. Mengonfigurasi hanya nama Collection menyebabkan operasi seperti baca/tulis dokumen tunggal, MGet, Refresh eksplisit, dan _update_by_query mengembalikan HTTP 403.
.sc-* hanya untuk konfigurasi izin. Aplikasi masih harus mengakses data melalui nama Collection dan tidak boleh mengakses atau menyimpan nama Indeks Pendukung tertentu secara langsung.
Slice bukan batas isolasi izin penyewa. Untuk mengisolasi izin, implementasikan di lapisan aplikasi atau melalui model keamanan Elasticsearch yang didukung lainnya.
Referensi
AI Engine Edition 9.99.0 menggunakan arsitektur tanpa status dan tidak sepenuhnya mewarisi semua fitur, pengaturan indeks, dan metode operasi Elasticsearch stateful tradisional. Konten berikut hanya mencantumkan perbedaan umum dan berdampak tinggi selama migrasi, bukan daftar lengkap semua fitur yang tidak kompatibel. Tidak adanya kemampuan dari tabel ini tidak berarti didukung. Sebelum menggunakan API, pengaturan indeks, atau fitur operasi Elasticsearch apa pun yang tidak dijelaskan dalam panduan ini, konfirmasi cakupan yang didukung aktual dari instans dan validasi dengan data bisnis nyata.
Perbedaan umum dari Elasticsearch stateful tradisional
Pengaturan yang ditandai sebagai tidak berlaku dalam tabel berikut mungkin mengembalikan HTTP 200 saat dimodifikasi, dan nilai baru mungkin terlihat saat dibaca kembali. Ini tidak menunjukkan bahwa fitur diaktifkan.
Kemampuan atau pengaturan Elasticsearch stateful tradisional | Perbedaan dalam AI Engine Edition 9.99.0 | Rekomendasi |
Manajemen Siklus Hidup Indeks (ILM), | Manajemen dan eksekusi kebijakan ILM tidak didukung. API terkait tidak terdaftar. | Untuk data log dan time-series, gunakan Siklus Hidup Data Stream saat instans mendukung kemampuan tersebut. Untuk indeks reguler, gunakan penjadwal eksternal untuk memanggil API Rollover, Hapus Indeks, dan lainnya yang didukung instans. |
Tier data hot, warm, cold, frozen dan migrasi berbasis | Model tier data tradisional | Gunakan penyimpanan objek untuk mempertahankan data. Rencanakan secara terpisah node indeks dan node pencarian. Kelola data historis berdasarkan kebijakan retensi bisnis Anda, dan gunakan downsampling saat instans mendukung kemampuan tersebut. |
Watcher | Rantai eksekusi pemicu, kondisi, dan notifikasi Watcher tidak didukung. API terkait tidak terdaftar. | Gunakan CloudMonitor, peringatan Log Service (SLS), platform peringatan perusahaan, atau tugas terjadwal eksternal. |
Pipeline koleksi lokal Legacy Stack Monitoring | Metode koleksi yang bergantung pada | Gunakan pemantauan dan log Konsol. Saat diperlukan pengamatan sisi aplikasi, gunakan API statistik kluster dan node yang didukung instans. |
Tugas Rollup dan | Tugas Rollup legacy dan API kuerinya tidak didukung. API terkait tidak terdaftar. | Pilih Downsample, Transform, atau tugas agregasi eksternal berdasarkan tipe data, dan dasarkan implementasi Anda pada API yang didukung instans. |
Snapshot yang Dapat Dicari, pemasangan snapshot, dan transisi tier frozen | Semantik pemasangan Snapshot yang Dapat Dicari tidak didukung. API pemasangan tidak terdaftar, dan proses tier frozen tidak dapat digunakan kembali. | Gunakan indeks native penyimpanan objek untuk data online. Untuk backup dan pemulihan, gunakan Snapshot/Pemulihan standar saat instans mendukung kemampuan tersebut. |
| Replika kueri tidak disesuaikan secara otomatis berdasarkan jumlah node pencarian. Pengaturan ini tidak berlaku dan tidak memperluas replika secara otomatis. | Konfigurasikan secara eksplisit |
| Mengatur ketahanan Translog ke | Optimalkan throughput tulis melalui ukuran Bulk, konkurensi, frekuensi refresh, perencanaan shard, dan kapasitas node indeks. |
| Tidak digunakan sebagai kondisi menunggu replika dalam pipeline tulis AI Engine Edition. Bahkan saat diatur ke | Periksa respons tulis secara terpisah, gunakan |
Selain itu, replika dalam arsitektur tanpa status terutama digunakan untuk kueri dan cache. Replika ini tidak setara dengan replika persisten dalam Elasticsearch stateful tradisional yang dapat dipromosikan menjadi shard utama. Jumlah replika kueri dan node pencarian bersama-sama menentukan kapasitas dan ketersediaan kueri. Data persisten disimpan dalam penyimpanan objek. Meningkatkan jumlah replika tidak dapat menggantikan strategi backup.
Batasan saat menggunakan Collection dan Slice
Batasan berikut hanya berlaku untuk penggunaan Collection dan Slice dalam AI Engine Edition. Ini tidak berarti kemampuan dengan nama yang sama juga tidak tersedia untuk indeks reguler.
Nama dan batasan batch
Item | Batas |
Nama Koleksi | Mengikuti aturan penamaan indeks dan Alias Elasticsearch. Harus huruf kecil. Panjang tidak boleh melebihi |
Nama Slice | Panjang: |
Irisan per permintaan Pencarian Tunggal | Maksimal |
Slice yang hilang dibuat otomatis per permintaan Bulk tunggal | Maksimal |
Slice per pendaftaran batch tunggal | Maksimal |
|
|
Baris yang dikembalikan oleh CAT Slice | Maksimal |
Batasan API Collection dan Slice
Berikut adalah batas API umum saat menggunakan Collection dan Slice. Ini bukan daftar dukungan lengkap untuk semua fitur AI Engine Edition.
DLS/FLS tidak dapat digunakan dengan Collection. Role dengan batasan DLS/FLS dapat dibuat, tetapi pengguna dengan role tersebut akan menerima HTTP
403saat mengakses Collection.Collection tidak mendukung pencarian lintas klaster (CCS).
Point in Time (PIT) tidak dapat secara langsung menargetkan Collection.
_graph/exploredan_termvectorstidak dapat menargetkan Collection._mtermvectorsjuga tidak dapat menyertakan item Collection.Collection tidak mendukung
_knn_searchyang sudah usang. Gunakanknndalam permintaan_searchsebagai gantinya.Mode recall klaster vektor hanya dapat secara otomatis memilih Slice kandidat saat permintaan menyediakan vektor kueri inline.
Pembaruan dengan skrip tidak didukung saat
routing_fielddikonfigurasi.Reindex Collection tidak mendukung skrip. Saat Collection adalah tujuan, pipeline ingest eksplisit tidak didukung. Sumber remote tidak mendukung
source._slice.Salin Slice tidak mendukung operasi lintas-Collection, pengalihan trafik atomik, atau penyesuaian pekerja secara dinamis selama eksekusi.
Salin Slice tidak didukung saat pemetaan Slice sumber berisi bidang inferensi seperti
semantic_text.CAT Slice tidak mendukung paginasi, statistik ukuran penyimpanan per-Slice, atau sortir berdasarkan ukuran penyimpanan Slice.
Referensi cepat API
Berikut adalah ringkasan API publik 9.99.0 yang diperlukan untuk kasus penggunaan dalam panduan ini. Ini bukan daftar API Elasticsearch lengkap, juga tidak mencakup API yang dipelihara secara internal.
Tujuan | API |
Buat Collection |
|
Ambil Collection |
|
Perbarui Collection |
|
Hapus Collection |
|
Daftarkan Slice tunggal |
|
Daftarkan Slices secara batch |
|
Daftar Slice dengan paginasi |
|
Hapus Slice |
|
Baca/tulis dokumen tunggal |
|
Tulis dan baca batch |
|
Kueri dan hitung |
|
API kueri lain |
|
Warm Slice cache |
|
Kueri tugas pemanasan |
|
Perbarui atau hapus berdasarkan kueri |
|
Reindex |
|
Perbarui pemetaan |
|
Perbarui pengaturan dinamis |
|
Refresh eksplisit |
|
Kelola Alias Collection |
|
Mulai Salin Slice |
|
Kueri status Salin |
|
Batalkan Salin |
|
CAT Collection |
|
CAT Pendukung |
|
CAT Slice |
|
Pengamatan kluster dan node |
|