Topik ini menjelaskan kompatibilitas antara Simple Log Service dan Elasticsearch, serta operasi API Elasticsearch dan bahasa domain-spesifik (DSL) Elasticsearch yang didukung oleh Simple Log Service.
Topik ini merupakan informasi milik Alibaba Cloud yang menjelaskan kemampuan yang disediakan untuk berinteraksi dengan layanan pihak ketiga. Nama perusahaan dan layanan pihak ketiga mungkin dirujuk dalam topik ini.
Kompatibilitas
Elasticsearch adalah mesin pencarian dan analitik terdistribusi sumber terbuka yang dibangun di atas Apache Lucene. Umumnya digunakan untuk pemrosesan data dan analisis. Jika Anda beralih dari mesin log Elasticsearch ke Simple Log Service, Anda mungkin perlu menyesuaikan kebiasaan penggunaan dan program hulu-hilir Anda. Untuk mempermudah transisi, Simple Log Service menyediakan API yang kompatibel dengan Elasticsearch guna memastikan migrasi solusi kueri dan analisis yang lancar serta mengurangi kesulitan dalam menggunakan Simple Log Service.
API yang kompatibel dengan Elasticsearch dari Simple Log Service menerjemahkan sintaks kueri DSL Elasticsearch menjadi sintaks kueri berbasis indeks dan sintaks analisis SQL dari Simple Log Service. Kemudian, hasil kueri dan analisis dikembalikan dalam format yang sesuai dengan persyaratan Elasticsearch, sehingga protokol kueri Elasticsearch dapat diimplementasikan.
API yang kompatibel dengan Elasticsearch dari Simple Log Service diimplementasikan berdasarkan spesifikasi API Elasticsearch 7.10.
Anda hanya dapat memanggil operasi API yang kompatibel dengan Elasticsearch saat menggunakan Logstore Standar dan telah membuat setidaknya satu indeks bidang.
Titik akhir API yang kompatibel dengan Elasticsearch
Titik akhir API yang kompatibel dengan Elasticsearch memiliki format https://${project}.${sls-endpoint}/es/. Contoh: https://etl-guangzhou.cn-guangzhou.log.aliyuncs.com/es/. ${project} menentukan nama proyek, sedangkan ${sls-endpoint} menentukan titik akhir proyek. Untuk informasi lebih lanjut, lihat Titik Akhir.
Operasi API yang Didukung yang Kompatibel dengan Elasticsearch
Tabel berikut menjelaskan operasi API Elasticsearch yang didukung oleh API yang kompatibel dengan Elasticsearch dari Simple Log Service.
Metode Permintaan | Jalur API | Deskripsi |
Post | /${index}/_search | Mengkueri indeks tertentu. Bidang indeks menentukan proyek Simple Log Service dan Logstore. Format: |
Post | /${index}/_async_search | Mengkueri beberapa sumber daya sekaligus. |
Post | /_msearch | Mengkueri beberapa sumber daya sekaligus. |
Post | /${index}/_bulk | Menulis data ke indeks tertentu. Penting Operasi _bulk hanya mendukung penulisan data dan tidak mendukung pembaruan data. |
Get | /${index}/_mapping | Mengkueri pemetaan indeks tertentu. |
DSL Elasticsearch yang Didukung
Tabel berikut menjelaskan DSL Elasticsearch yang didukung oleh API yang kompatibel dengan Elasticsearch dari Simple Log Service.
DSL Terkait Kueri
DSL | Deskripsi |
bool | Menjalankan operasi Boolean. |
match_all | Mencocokkan semua log. |
match | Mencocokkan indeks. |
match_phrase | Mencocokkan frase. Saat Anda melakukan kueri, operator diterjemahkan menjadi klausa SQL LIKE dari Simple Log Service. Bidang dalam hasil kueri dikonfigurasi dengan indeks bidang. |
multi_match | Mencocokkan beberapa bidang. |
prefix | Mengkueri awalan. |
range | Mengkueri rentang. |
term | Mengkueri istilah. Saat Anda melakukan kueri, operator diterjemahkan menjadi sintaks kueri berbasis indeks dari Simple Log Service. |
terms | Mengkueri beberapa istilah. Saat Anda melakukan kueri, operator diterjemahkan menjadi sintaks kueri berbasis indeks dari Simple Log Service. |
wildcard | Mencocokkan pola wildcard. Saat Anda melakukan kueri, operator diterjemahkan menjadi sintaks analisis SQL dari Simple Log Service. |
regexp | Mencocokkan ekspresi reguler. Saat Anda melakukan kueri, operator diterjemahkan menjadi fungsi SQL regexp_like dari Simple Log Service. Bidang dalam hasil kueri dikonfigurasi dengan indeks bidang. |
exists | Memeriksa apakah nilai ada. |
ids | Mengkueri bidang ID. |
DSL Terkait Agregasi
Kategori | DSL | Deskripsi |
Analisis statistik berdasarkan grup | Histogram tanggal | Menganalisis statistik berdasarkan bidang |
Histogram | Menganalisis statistik berdasarkan interval nilai tertentu. | |
Range | Menganalisis statistik berdasarkan rentang nilai. | |
Terms | Menganalisis statistik berdasarkan nilai unik suatu bidang. | |
Filter | Menganalisis statistik berdasarkan kondisi filter tunggal. | |
Filters | Menganalisis statistik berdasarkan beberapa kondisi filter. | |
Analisis statistik berbasis metrik | Min | Menghitung nilai minimum. |
Max | Menghitung nilai maksimum. | |
Avg | Menghitung nilai rata-rata. | |
Sum | Menghitung total nilai. | |
Count | Menghitung jumlah. | |
Cardinality | Menghitung total jumlah nilai unik. | |
Percentiles | Menghitung persentil di mana suatu nilai berada. | |
Mengembalikan log | Top hits | Mengembalikan log agregat. |
Perbedaan antara API yang kompatibel dengan Elasticsearch dan API standar Elasticsearch
API yang kompatibel dengan Elasticsearch dari Simple Log Service tidak mendukung pembaruan data.
API yang kompatibel dengan Elasticsearch dari Simple Log Service tidak mendukung pernyataan kueri yang berisi skrip.
Logstore Simple Log Service memungkinkan Anda mengkueri petabyte data. Saat menggunakan API yang kompatibel dengan Elasticsearch dari Simple Log Service, Elasticsearch tidak perlu melakukan rollover indeks.
Simple Log Service tidak secara otomatis membuat indeks. Anda harus membuat indeks dengan memanggil operasi API atau menggunakan konsol Simple Log Service. Untuk informasi lebih lanjut, lihat Buat Indeks.
Saat menggunakan DSL Elasticsearch untuk mengkueri bidang, perhatikan pemetaan antara bidang Elasticsearch dan Simple Log Service. Tabel berikut menjelaskan pemetaan bidang.
Elasticsearch
Simple Log Service
Deskripsi
@timestamp__time__Jika Anda menentukan bidang
@timestampdalam pernyataan kueri, bidang__time__dari Simple Log Service dipetakan._idTidak ada
Jika bidang
_idada di Simple Log Service, bidang _id di Elasticsearch dipetakan ke bidang_iddi Simple Log Service. Jika bidang _id tidak ada di Simple Log Service, sistem menghasilkan bidanguuidatau_pack_metadan memetakan nilai bidang _id ke bidang uuid atau _pack_meta.Berikan izin kepada pengguna RAM
Anda dapat menggunakan metode berikut untuk memberikan izin kepada pengguna RAM agar dapat mengkueri atau menulis data menggunakan API yang kompatibel dengan Elasticsearch.
Mode Sederhana: Gunakan kebijakan sistem untuk memberikan izin yang diperlukan kepada pengguna RAM tanpa perlu mengonfigurasi parameter tambahan.
Mode Kustom: Buat kebijakan kustom dan lampirkan kebijakan tersebut ke pengguna RAM. Mode ini memungkinkan kontrol akses yang lebih halus, tetapi konfigurasinya lebih kompleks.
Mode sederhana
Gunakan kebijakan sistem untuk memberikan izin kepada pengguna RAM agar dapat mengkueri atau menulis data menggunakan API yang kompatibel dengan Elasticsearch. Tabel berikut menjelaskan kebijakan sistem. Untuk informasi lebih lanjut, lihat Buat Pengguna RAM dan Otorisasi Pengguna RAM untuk Mengakses Simple Log Service.
Nama kebijakan sistem
Izin kueri
Izin tulis
AliyunLogFullAccess
Ya
Ya
AliyunLogReadOnlyAccess
Ya
Tidak
Mode kustom
Gunakan kebijakan kustom untuk memberikan izin kepada pengguna RAM agar dapat mengkueri atau menulis data menggunakan API yang kompatibel dengan Elasticsearch. Contoh berikut menunjukkan cara mengonfigurasi kebijakan kustom. Untuk informasi lebih lanjut, lihat Buat Kebijakan Kustom dan Berikan Izin kepada Pengguna RAM.
Skrip berikut menunjukkan contoh kebijakan yang memberikan izin kepada pengguna RAM untuk mengkueri dan menulis data menggunakan API yang kompatibel dengan Elasticsearch:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "log:GetIndex", "log:GetLogStoreContextLogs", "log:ListLogStores", "log:GetLogStoreHistogram", "log:GetLogstoreLogs", "log:GetLogStoreContextLogs", "log:GetCursorOrData", "log:GetLogstore", "log:PostLogStoreLogs" ], "Resource": "acs:log:*:*:project/*" } ] }Skrip berikut menunjukkan contoh kebijakan yang memberikan izin kepada pengguna RAM untuk mengkueri data menggunakan API yang kompatibel dengan Elasticsearch:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "log:GetIndex", "log:GetLogStoreContextLogs", "log:ListLogStores", "log:GetLogStoreHistogram", "log:GetLogstoreLogs", "log:GetLogStoreContextLogs", "log:GetCursorOrData", "log:GetLogstore" ], "Resource": "acs:log:*:*:project/*" } ] }Skrip berikut menunjukkan contoh kebijakan yang memberikan izin kepada pengguna RAM untuk menulis data menggunakan API yang kompatibel dengan Elasticsearch:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "log:PostLogStoreLogs" ], "Resource": "acs:log:*:*:project/*" } ] }