Elasticsearch (ES) dapat mengalami bottleneck performa saat menangani kueri agregat kompleks, kueri term ber-kardinalitas tinggi, dan pencarian vektor. Kernel cloud-native FalconSeek dibangun di atas mesin Havenask proprietary dari Alibaba. Kernel ini menggunakan memori kolom berbasis C++ dan kerangka kerja sepenuhnya asinkron untuk secara signifikan meningkatkan performa kueri, sekaligus tetap sepenuhnya kompatibel dengan ekosistem ES. Topik ini menjelaskan cara mengaktifkan FalconSeek untuk mempercepat kueri, mencakup pembuatan instans, konfigurasi tingkat indeks dan bidang, serta manajemen kebijakan kueri. Panduan ini juga menyediakan praktik optimasi untuk skenario yang sensitif terhadap performa, seperti pencarian vektor.
Cakupan
Pratinjau undangan dan penggunaan gratis: FalconSeek sedang dalam fase pengujian gratis terbatas. Untuk ditambahkan ke daftar putih, hubungi dukungan teknis.
Batasan versi: Fitur ini memerlukan Elasticsearch versi 8.17.0. Anda tidak dapat melakukan peningkatan atau penurunan versi.
Batasan instans: Anda hanya dapat mengaktifkan FalconSeek pada instans Enhanced Edition (Vector Search) yang baru dibeli. Instans yang sudah ada tidak didukung.
Buat instans dan aktifkan FalconSeek
Anda hanya dapat mengaktifkan FalconSeek saat membuat instans baru. Ikuti langkah-langkah berikut untuk menyelesaikan konfigurasi.
Pada halaman purchase, aktifkan FalconSeek.
Cluster Type: Harus berupa Vector Enhanced Edition.
Instance Type: Pilih 8.17.0 (Recommended For Vector Scenarios).
Advanced Enhanced Features: Pilih FalconSeek Cloud-native Kernel.
Atur parameter lain sesuai kebutuhan, seperti VPC dan Cluster Specification, lalu selesaikan proses pembayaran.
Setelah instans dibuat, jalankan perintah berikut di Konsol Kibana untuk memastikan FalconSeek telah diaktifkan di tingkat kluster.
GET _cluster/settings?include_defaults&filter_path=defaults.havenask.engine.enabledJika bidang
enableddalam respons bernilaitrue, fitur tersebut telah diaktifkan.{ "defaults": { "havenask": { "engine": { "enabled": "true" } } } }
Gunakan FalconSeek dalam indeks
Setelah Anda mengaktifkan FalconSeek untuk suatu instans, fitur tersebut tidak diaktifkan secara default untuk indeks apa pun. Anda harus menggunakan pengaturan indeks untuk secara eksplisit mengaktifkan mesin FalconSeek pada indeks tertentu yang ingin dipercepat.
Aktifkan FalconSeek untuk indeks baru
Saat membuat indeks, tambahkan parameter
"index.havenask.engine.enabled": truedalamsettingsuntuk mengaktifkan FalconSeek.PUT falcon_seek_test { "settings": { "index.havenask.engine.enabled": true // Enable FalconSeek }, "mappings": { "properties": { "foo": { "type": "keyword" } } } }Tulis data.
POST falcon_seek_test/_bulk {"index":{}} {"foo":"hello"} {"index":{}} {"foo":"world"} {"index":{}} {"foo":"cpp"} {"index":{}} {"foo":"java"}Kueri data tersebut. FalconSeek digunakan secara default.
GET falcon_seek_test/_search { "query": { "term":{ "foo":{ "value": "hello" } } }, "sort": [ { "_doc": { "order": "desc" } } ] }
Aktifkan FalconSeek untuk indeks yang sudah ada
Perintah berikut membuat indeks tetapi tidak mengaktifkan akselerasi.
PUT my_existing_index { "settings": { "number_of_shards": 5, "number_of_replicas": 1 }, "mappings": { "properties": { "foo": { "type": "keyword" } } } }Gunakan API
_settingsuntuk memperbarui konfigurasi indeks dan mengaktifkan fitur tersebut secara dinamis.PUT my_existing_index/_settings { "index.havenask.engine.enabled": true }Agar pengaturan ini berlaku, Anda harus menutup indeks dengan menjalankan
POST /my_existing_index/_close, lalu membukanya kembali dengan menjalankanPOST /my_existing_index/_open.
Kelola kebijakan eksekusi kueri
FalconSeek menyediakan kebijakan eksekusi kueri yang fleksibel. Anda dapat mengontrol apakah suatu permintaan diproses oleh FalconSeek atau dialihkan kembali ke mesin Elasticsearch native. Pengaturan ini dapat dikonfigurasi di tingkat indeks atau untuk kueri individual. Untuk mengonfigurasi kebijakan, gunakan parameter index.havenask.engine.search.type di tingkat indeks atau parameter havenask_search_type di tingkat kueri. Parameter tingkat kueri memiliki prioritas lebih tinggi.
Kebijakan | Deskripsi | Skenario yang direkomendasikan |
| Kueri diprioritaskan untuk dieksekusi oleh FalconSeek. Jika ditemukan sintaks atau fitur yang tidak didukung, permintaan secara otomatis dialihkan kembali ke mesin Elasticsearch native. | Lingkungan produksi umum yang memerlukan keseimbangan antara performa dan kompatibilitas. |
| Kueri dipaksa dijalankan pada mesin Elasticsearch native. | Saat Anda perlu membandingkan performa atau melewati masalah yang tidak diketahui pada FalconSeek. |
| Kueri dipaksa berjalan di mesin FalconSeek. Jika ditemukan sintaks atau fitur yang tidak didukung, sistem langsung melemparkan exception dan tidak melakukan fallback. | Skenario debugging. |
Tetapkan kebijakan kueri default di tingkat indeks
Contoh berikut menetapkan agar semua kueri pada my_index berjalan di mesin Elasticsearch native secara default.
PUT my_index/_settings
{
"index.havenask.engine.search.type": "es"
}Timpa sementara kebijakan default untuk suatu kueri
Jika indeks my_index menggunakan kebijakan native secara default, Anda dapat memaksa kueri tertentu menggunakan mesin Elasticsearch native dengan menambahkan parameter havenask_search_type ke permintaan kueri.
Metode 1: Sebagai parameter URL
GET my_index/_search?havenask_search_type=es { "query": { "match_all": {} } }Metode 2: Sebagai parameter badan permintaan
GET my_index/_search { "query": { "match_all": {} }, "havenask_search_type": "es" }
Percepat pencarian vektor dengan FalconSeek
FalconSeek menambahkan indeks vektor berbasis C++ baru di atas skema indeks ES asli. Indeks vektor FalconSeek dikembangkan oleh Alibaba dan mendukung layanan utama dalam Grup Alibaba, seperti pencarian dan rekomendasi di Taobao dan Tmall, serta Pailitao (Pencarian berdasarkan gambar). Anda dapat menggunakan indeks vektor berkinerja tinggi yang terintegrasi dalam kernel FalconSeek untuk membangun aplikasi AI yang efisien, seperti Pencarian berdasarkan gambar dan pencarian semantik.
Buat indeks vektor dengan menentukan bidang
dense_vectorbernamamage_vectordalamPemetaanuntuk menyimpan vektor citra atau teks, lalu aktifkan FalconSeek untuk indeks tersebut.PUT vector_index { "settings": { "index.havenask.engine.enabled": true }, "mappings": { "properties": { "image_vector": { "type": "dense_vector", "dims": 128 , "index_options": { "type": "havenask_native" } }, "title": { "type": "keyword" } } } }Tulis data vektor. Gunakan API
_bulkatau_indexuntuk menulis dokumen. Nilai bidang vektor berupa array bilangan titik mengambang.POST vector_index/_bulk {"index":{"_id":"1"}} {"image_vector":[0.12, -0.05, 0.08, 0.24, -0.17, 0.31, 0.02, -0.19, 0.11, 0.28, -0.03, 0.15, 0.22, -0.11, 0.09, 0.33, -0.07, 0.14, 0.26, -0.21, 0.18, 0.29, -0.13, 0.06, 0.35, -0.08, 0.16, 0.23, -0.15, 0.12, 0.27, -0.22, 0.19, 0.32, -0.14, 0.07, 0.25, -0.18, 0.13, 0.30, -0.09, 0.17, 0.24, -0.16, 0.10, 0.34, -0.10, 0.20, 0.31, -0.23, 0.15, 0.28, -0.12, 0.11, 0.26, -0.19, 0.14, 0.29, -0.17, 0.08, 0.22, -0.20, 0.16, 0.27, -0.15, 0.09, 0.25, -0.21, 0.18, 0.30, -0.13, 0.07, 0.24, -0.22, 0.19, 0.32, -0.16, 0.10, 0.26, -0.18, 0.12, 0.28, -0.14, 0.06, 0.23, -0.19, 0.15, 0.29, -0.11, 0.05, 0.21, -0.17, 0.13, 0.27, -0.10, 0.04, 0.20, -0.15, 0.11, 0.25, -0.09, 0.03, 0.19, -0.13, 0.10, 0.24, -0.08, 0.02, 0.18, -0.12, 0.09, 0.23, -0.07, 0.01, 0.17, -0.11, 0.08, 0.22, 0.05, -0.06, 0.09, 0.23, -0.07, 0.01, 0.17, -0.11, 0.08, 0.22],"title":"Image One"} {"index":{"_id":"2"}} {"image_vector":[0.12, -0.05, 0.08, 0.24, -0.17, 0.31, 0.02, -0.19, 0.11, 0.28, -0.03, 0.15, 0.22, -0.11, 0.09, 0.33, -0.07, 0.14, 0.26, -0.21, 0.18, 0.29, -0.13, 0.06, 0.35, -0.08, 0.16, 0.23, -0.15, 0.12, 0.27, -0.22, 0.19, 0.32, -0.14, 0.07, 0.25, -0.18, 0.13, 0.30, -0.09, 0.17, 0.24, -0.16, 0.10, 0.34, -0.10, 0.20, 0.31, -0.23, 0.15, 0.28, -0.12, 0.11, 0.26, -0.19, 0.14, 0.29, -0.17, 0.08, 0.22, -0.20, 0.16, 0.27, -0.15, 0.09, 0.25, -0.21, 0.18, 0.30, -0.13, 0.07, 0.24, -0.22, 0.19, 0.32, -0.16, 0.10, 0.26, -0.18, 0.12, 0.28, -0.14, 0.06, 0.23, -0.19, 0.15, 0.29, -0.11, 0.05, 0.21, -0.17, 0.13, 0.27, -0.10, 0.04, 0.20, -0.15, 0.11, 0.25, -0.09, 0.03, 0.19, -0.13, 0.10, 0.24, -0.08, 0.02, 0.18, -0.12, 0.09, 0.23, -0.07, 0.01, 0.17, -0.11, 0.08, 0.22, 0.05, -0.06, 0.09, 0.23, -0.07, 0.01, 0.17, -0.11, 0.08, 0.22],"title":"Image Two"}Lakukan pencarian vektor k-NN. Gunakan klausa kueri
knnuntuk menemukan K hasil teratas yang paling mirip dengan vektor tertentu.GET vector_index/_search { "knn": { "field": "image_vector", "query_vector": [0.12, -0.05, 0.08, 0.24, -0.17, 0.31, 0.02, -0.19, 0.11, 0.28, -0.03, 0.15, 0.22, -0.11, 0.09, 0.33, -0.07, 0.14, 0.26, -0.21, 0.18, 0.29, -0.13, 0.06, 0.35, -0.08, 0.16, 0.23, -0.15, 0.12, 0.27, -0.22, 0.19, 0.32, -0.14, 0.07, 0.25, -0.18, 0.13, 0.30, -0.09, 0.17, 0.24, -0.16, 0.10, 0.34, -0.10, 0.20, 0.31, -0.23, 0.15, 0.28, -0.12, 0.11, 0.26, -0.19, 0.14, 0.29, -0.17, 0.08, 0.22, -0.20, 0.16, 0.27, -0.15, 0.09, 0.25, -0.21, 0.18, 0.30, -0.13, 0.07, 0.24, -0.22, 0.19, 0.32, -0.16, 0.10, 0.26, -0.18, 0.12, 0.28, -0.14, 0.06, 0.23, -0.19, 0.15, 0.29, -0.11, 0.05, 0.21, -0.17, 0.13, 0.27, -0.10, 0.04, 0.20, -0.15, 0.11, 0.25, -0.09, 0.03, 0.19, -0.13, 0.10, 0.24, -0.08, 0.02, 0.18, -0.12, 0.09, 0.23, -0.07, 0.01, 0.17, -0.11, 0.08, 0.22, 0.05, -0.06, 0.09, 0.23, -0.07, 0.01, 0.17, -0.11, -0.08,-0.22], "k": 10, "num_candidates": 100 }, "fields": ["title"] }
Untuk informasi selengkapnya tentang penggunaan indeks vektor FalconSeek, lihat FalconSeek Vector Index User Guide.
Cara kerja
Kernel cloud-native FalconSeek menggantikan beberapa komponen Lucene dasar Elasticsearch dengan mesin C++ yang sangat dioptimalkan. Saat Anda mengirim permintaan kueri, permintaan tersebut pertama kali mencapai lapisan plugin FalconSeek. Lapisan ini menentukan apakah kueri dapat diproses secara efisien oleh mesin FalconSeek:
Kueri yang didukung: Permintaan diteruskan ke mesin FalconSeek berkinerja tinggi untuk dieksekusi.
Kueri yang tidak didukung: Berdasarkan kebijakan yang Anda konfigurasi, sistem secara otomatis melakukan fallback ke mesin Elasticsearch native atau mengembalikan pesan kesalahan.
Mekanisme ini memastikan performa tinggi sekaligus menjaga kompatibilitas dan stabilitas.
FAQ
Q: Dapatkah saya mengaktifkan FalconSeek pada instans Elasticsearch yang sudah ada?
A: Tidak, Anda tidak dapat melakukannya. FalconSeek hanya dapat diaktifkan pada instans yang baru dibeli. Untuk menggunakan fitur ini pada instans yang sudah ada, Anda harus membuat instans baru yang kompatibel dan memigrasikan data Anda menggunakan alat seperti Alibaba Cloud Data Transmission Service (DTS) atau Logstash.
Q: Apa yang terjadi jika saya menjalankan kueri yang tidak didukung oleh FalconSeek?
A: Hasilnya bergantung pada kebijakan eksekusi kueri Anda. Dengan kebijakan default native, kueri secara otomatis melakukan fallback ke mesin Elasticsearch native. Anda tetap menerima hasil yang benar, tetapi tanpa akselerasi performa dari FalconSeek. Dengan kebijakan native-direct, sistem mengembalikan pesan kesalahan.