Plug-in aliyun-sql digunakan untuk mengurai kueri SQL. Setelah memasang plug-in ini di kluster Alibaba Cloud Elasticsearch, Anda dapat menjalankan pernyataan SQL untuk menanyakan data dalam kluster tersebut. Plug-in ini tidak lagi tersedia. Sebagai gantinya, gunakan plug-in x-pack-sql yang disediakan oleh Elastic.
Plug-in aliyun-sql tidak lagi tersedia untuk pengguna baru. Pengguna yang sudah ada masih dapat menggunakannya. Untuk menjalankan pernyataan SQL pada kluster Elasticsearch Anda, gunakan plug-in x-pack-sql dari Elastic. Informasi lebih lanjut tentang plug-in x-pack-sql dapat ditemukan di sql-search-api.
Prasyarat
Kluster Alibaba Cloud Elasticsearch telah dibuat dengan versi V6.7.0 atau lebih baru tetapi lebih awal dari V7.10.0.
Plug-in aliyun-sql telah dipasang.
Anda dapat memeriksa status pemasangan plug-in di halaman konfigurasi plug-in kluster.
Peringatan
Sebelum menggunakan plug-in, pastikan parameter aliyun.sql.enabled diatur ke true untuk kluster Elasticsearch Anda. Parameter ini dapat dikonfigurasi di konsol Kibana. Untuk informasi lebih lanjut, lihat Masuk ke konsol Kibana.
Anda dapat menghapus plug-in secara manual. Sebelum menghapusnya, jalankan perintah berikut di konsol Kibana untuk menonaktifkan plug-in dengan mengatur aliyun.sql.enabled menjadi null. Berikut adalah contoh konfigurasi:
PUT _cluster/settings { "persistent": { "aliyun.sql.enabled": null } }Penghapusan plug-in akan memicu restart kluster. Jika Anda tidak menonaktifkan plug-in sebelum penghapusan, kluster mungkin macet selama proses restart. Dalam situasi ini, jalankan perintah berikut untuk membersihkan konfigurasi arsip dan melanjutkan restart:
PUT _cluster/settings { "persistent": { "archived.aliyun.sql.enabled": null } }
Ikhtisar sintaksis
Plug-in aliyun-sql menggunakan sintaksis MySQL 5.0 dan mendukung berbagai fungsi serta ekspresi. Untuk informasi lebih lanjut, lihat Fungsi dan Ekspresi Lainnya.
Kueri Dasar
SELECT [DISTINCT] (* | expression) [[AS] alias] [, ...] FROM table_name [WHERE condition] [GROUP BY expression [, ...] [HAVING condition]] [ORDER BY expression [ ASC | DESC ] [, ...]] [LIMIT [offset, ] size]Kueri Gabungan
SELECT expression FROM table_name JOIN table_name ON expression [WHERE condition]PentingSaat melakukan kueri gabungan, Alibaba Cloud Elasticsearch membatasi jumlah maksimum entri data yang dapat ditanyakan dari satu tabel. Nilai defaultnya adalah 10.000. Anda dapat menyesuaikan batas ini dengan mengonfigurasi parameter max.join.size. Contohnya, jalankan perintah berikut di konsol Kibana untuk menyetel nilai maksimum menjadi 20.000:
PUT /_cluster/settings { "transient": { "max.join.size": 20000 } }Kueri gabungan yang Anda lakukan merupakan kueri inner join. Secara internal, plug-in aliyun-sql menggunakan merge join untuk kueri tersebut. Saat melakukan kueri gabungan, pastikan nilai-nilai bidang dalam tabel yang ingin digabungkan sesuai dengan ID dokumen Elasticsearch. Kueri gabungan hanya dapat dilakukan pada bidang tipe data numerik.
Prosedur
Masuk ke konsol Kibana kluster Elasticsearch Anda dan buka halaman utama konsol Kibana sesuai panduan.
Untuk informasi lebih lanjut tentang cara masuk ke konsol Kibana, lihat Masuk ke Konsol Kibana.
CatatanContoh ini menggunakan kluster Elasticsearch V6.7.0. Operasi pada versi lain mungkin berbeda. Pastikan untuk mengikuti operasi aktual di konsol yang berlaku.
Di panel navigasi sisi kiri halaman yang muncul, klik Dev Tools.
Pada tab Console, jalankan perintah berikut untuk mengaktifkan plug-in:
PUT _cluster/settings { "transient": { "aliyun.sql.enabled": true } }Tulis data.
CatatanPlug-in aliyun-sql tidak mendukung permintaan tulis. Hanya permintaan kueri yang didukung. Oleh karena itu, kode berikut menggunakan permintaan bulk untuk menulis data.
Data informasi siswa
PUT stuinfo/_doc/_bulk?refresh {"index":{"_id":"1"}} {"id":572553,"name":"xiaoming","age":"22","addr":"addr1"} {"index":{"_id":"2"}} {"id":572554,"name":"xiaowang","age":"23","addr":"addr2"} {"index":{"_id":"3"}} {"id":572555,"name":"xiaoliu","age":"21","addr":"addr3"}Data peringkat siswa
PUT sturank/_doc/_bulk?refresh {"index":{"_id":"1"}} {"id":572553,"score":"90","sorder":"5"} {"index":{"_id":"2"}} {"id":572554,"score":"92","sorder":"3"} {"index":{"_id":"3"}} {"id":572555,"score":"86","sorder":"10"}
Jalankan pernyataan SQL.
Lakukan kueri gabungan untuk menanyakan nama dan peringkat seorang siswa.
POST /_alisql { "query":"select stuinfo.name,sturank.sorder from stuinfo join sturank on stuinfo.id=sturank.id" }Jika pernyataan berhasil dijalankan, plug-in aliyun-sql mengembalikan informasi tabel. Bidang columns berisi nama kolom dan tipe data. Bidang rows berisi data baris.
{ "columns" : [ { "name" : "name", "type" : "text" }, { "name" : "sorder", "type" : "text" } ], "rows" : [ [ "xiaoming", "5" ], [ "xiaowang", "3" ], [ "xiaoliu", "10" ] ] }