Terokai enjin storan carian teks penuh yang meningkatkan prestasi pertanyaan: penyepaduan MySQL dan Elasticsearch
Pengenalan:
Dengan perkembangan pesat Internet dan pertumbuhan maklumat yang pesat, carian teks penuh menjadi semakin penting dalam banyak bidang aplikasi. Walaupun pangkalan data hubungan tradisional seperti MySQL boleh menyimpan dan menanyakan data, keupayaan carian teks penuh mereka adalah terhad. Untuk meningkatkan kecekapan carian teks penuh, kami boleh menggunakan enjin carian sumber terbuka seperti Elasticsearch. Artikel ini akan memperkenalkan penyepaduan MySQL dan Elasticsearch untuk mencapai fungsi carian teks penuh yang lebih cekap.
Latar Belakang:
Untuk senario aplikasi biasa, seperti laman web blog, kami biasanya mempunyai jadual yang mengandungi kandungan artikel dan kandungan artikel perlu dicari dalam teks penuh. Kaedah tradisional ialah menggunakan pernyataan LIKE MySQL untuk melakukan pertanyaan kabur Untuk aplikasi berskala kecil, masalah prestasi mungkin tidak jelas. Tetapi apabila set data menjadi lebih besar dan lebih besar, kecekapan pertanyaan pangkalan data hubungan tradisional menurun dengan ketara Pada masa ini, kita perlu menggunakan penyelesaian yang lebih cekap untuk mengendalikan carian teks penuh.
Penyelesaian:
Elasticsearch ialah enjin carian dan analisis teragih masa nyata yang ditulis berdasarkan Lucene, yang menyediakan keupayaan carian teks penuh berprestasi tinggi dan berkuasa. Untuk pertanyaan pangkalan data penyimpanan dan hubungan, MySQL ialah penyelesaian yang matang dan digunakan secara meluas. Menggabungkan kedua-duanya boleh mencapai penyelesaian yang boleh menyimpan data dan melakukan carian teks penuh dengan cekap. Di bawah ini kami akan memperkenalkan secara terperinci cara mengintegrasikan MySQL dan Elasticsearch.
Langkah Pertama: Pasang dan Konfigurasikan Elasticsearch
Mula-mula, kita perlu memasang Elasticsearch. Muat turun dan pasang versi terkini Elasticsearch dari tapak web rasmi. Selepas pemasangan selesai, buka fail elasticsearch.yml dalam direktori konfigurasi, tetapkan cluster.name kepada nama unik dan tetapkan network.host kepada alamat IP tempatan.
Langkah 2: Buat indeks dan pemetaan
Dalam Elasticsearch, kita perlu mencipta indeks untuk menyimpan data dan menentukan pemetaan untuk menentukan jenis medan data. Proses mencipta indeks dan pemetaan boleh dilakukan menggunakan API RESTful Elasticsearch, berikut adalah contoh:
PUT /my_index
{
"mappings": {
"article": { "properties": { "title": { "type": "text" }, "content": { "type": "text" }, "date": { "type": "date" } } }
}
}
Dalam contoh ini, kami mencipta indeks An bernama my_index dan mentakrifkan jenis bernama artikel. Dalam jenis artikel, kami mentakrifkan tiga medan: tajuk, kandungan dan tarikh serta menentukan jenis datanya.
Langkah 3: Segerakkan data
Seterusnya, kita perlu menyegerakkan data dalam MySQL ke Elasticsearch. Untuk mencapai langkah ini, kita boleh menggunakan pemalam Elasticsearch elasticsearch-river-jdbc. Melalui pemalam ini, kami boleh mewujudkan sumber data dan mengimport data daripada MySQL ke dalam indeks Elasticsearch. Berikut ialah contoh:
PUT /_river/my_river/_meta
{
"type": "jdbc",
"jdbc": {
"url": "jdbc:mysql://localhost:3306/mydb", "user": "root", "password": "password", "sql": "SELECT id, title, content, date FROM articles", "index": "my_index", "type": "article"
}
}
Dalam contoh ini, kami mencipta fail bernama The data sumber my_river, dan menentukan maklumat sambungan MySQL dan pernyataan SQL data yang akan diimport.
Langkah 4: Lakukan carian teks penuh
Selepas penyegerakan data selesai, kami boleh menggunakan fungsi carian teks penuh Elasticsearch untuk menanyakan data. Berikut ialah contoh:
GET /my_index/article/_search
{
"query": {
"match": { "content": "Elasticsearch" }
}
}
Dalam contoh ini, kami mencari artikel yang kandungannya mengandungi kata kunci Elasticsearch.
Kesimpulan:
Dengan menyepadukan MySQL dan Elasticsearch, kami boleh meningkatkan prestasi dan kecekapan carian teks penuh. MySQL bertanggungjawab untuk menyimpan dan mengurus data, manakala Elasticsearch bertanggungjawab untuk carian teks penuh yang cekap. Penyelesaian sedemikian boleh digunakan pada pelbagai senario aplikasi, seperti tapak web e-dagang, laman web berita dan aplikasi lain yang memerlukan carian cekap. Melalui langkah di atas, kami boleh mengintegrasikan MySQL dan Elasticsearch dengan mudah untuk mencapai enjin storan carian teks penuh yang lebih cekap.
Rujukan:
Atas ialah kandungan terperinci Terokai enjin storan carian teks penuh yang meningkatkan prestasi pertanyaan: Penyepaduan MySQL dan Elasticsearch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!