Simple Log Service menyediakan API kompatibel Elasticsearch yang menerjemahkan kueri DSL Elasticsearch menjadi kueri indeks SLS dan kueri analisis SQL. Topik ini mencakup prinsip kompatibilitas, operasi API yang didukung, serta sintaks DSL yang didukung.
Dokumen ini merupakan hak milik Alibaba Cloud. Dokumen ini menjelaskan cara layanan Alibaba Cloud berinteraksi dengan produk pihak ketiga dan dapat merujuk pada nama perusahaan atau produk pihak ketiga.
Prinsip kompatibilitas
Elasticsearch adalah mesin pencarian dan analisis terdistribusi open-source berbasis Apache Lucene. Saat melakukan migrasi dari Elasticsearch ke Simple Log Service, Anda mungkin perlu menyesuaikan alur kerja serta memodifikasi program hulu dan hilir. Simple Log Service menyediakan API kompatibel Elasticsearch untuk menyederhanakan proses migrasi tersebut.
API ini menerjemahkan kueri DSL Elasticsearch menjadi kueri indeks Simple Log Service dan kueri analisis SQL, lalu mengembalikan hasil dalam format respons API Elasticsearch.
-
API kompatibel Elasticsearch didasarkan pada spesifikasi Elasticsearch 7.10.
-
API kompatibel Elasticsearch hanya mendukung Logstore Standar, dan Anda harus membuat setidaknya satu field index.
Titik akhir API kompatibel Elasticsearch
Format titik akhir adalah https://${project}.${sls-endpoint}/es/. Contohnya, https://etl-guangzhou.cn-guangzhou.log.aliyuncs.com/es/. ${project} adalah nama proyek dan ${sls-endpoint} adalah titik akhir Simple Log Service. Untuk informasi selengkapnya, lihat Endpoints.
Operasi API Elasticsearch yang didukung
API kompatibel Elasticsearch mendukung operasi berikut.
|
Metode permintaan |
Jalur API |
Deskripsi |
|
Post |
/${index}/_search |
Menanyakan indeks tertentu. Indeks tersebut dipetakan ke proyek dan Logstore Simple Log Service dalam format |
|
Post |
/${index}/_async_search |
Menjalankan kueri batch. |
|
Post |
/_msearch |
Menjalankan kueri batch. |
|
Post |
/${index}/_bulk |
Menulis data ke indeks tertentu. Penting
Operasi _bulk hanya mendukung penulisan data dan tidak mendukung pembaruan data. |
|
Get |
/${index}/_mapping |
Mendapatkan pemetaan indeks tertentu. |
DSL Elasticsearch yang Didukung
API kompatibel Elasticsearch mendukung DSL Elasticsearch berikut.
DSL yang terkait kueri
|
DSL |
Deskripsi |
|
bool |
Menjalankan operasi Boolean. |
|
match_all |
Mencocokkan semua log. |
|
match |
Mencocokkan suatu indeks. |
|
match_phrase |
Pencocokan frasa. Diterjemahkan menjadi klausa SQL LIKE. Hanya mengembalikan bidang yang diindeks. |
|
multi_match |
Mencocokkan beberapa bidang. |
|
prefix |
Menjalankan kueri awalan. |
|
range |
Menjalankan kueri rentang. |
|
term |
Menjalankan kueri tepat. Diterjemahkan ke sintaks kueri indeks Simple Log Service. |
|
terms |
Menjalankan kueri untuk beberapa kata kunci. Diterjemahkan ke sintaks kueri indeks Simple Log Service. |
|
wildcard |
Mencocokkan pola wildcard. Diterjemahkan ke sintaks analisis SQL Simple Log Service. |
|
regexp |
Mencocokkan ekspresi reguler. Diterjemahkan ke sintaks regexp_like SQL. Hanya mengembalikan bidang yang diindeks. |
|
exists |
Memeriksa apakah suatu bidang ada. |
|
ids |
Menanyakan bidang ID. |
DSL yang terkait agregasi
|
Kategori |
DSL |
Deskripsi |
|
Statistik kelompok |
Date histogram |
Mengelompokkan statistik berdasarkan bidang |
|
Histogram |
Mengelompokkan statistik berdasarkan interval numerik. |
|
|
Range |
Mengelompokkan statistik berdasarkan rentang numerik. |
|
|
Terms |
Mengelompokkan statistik berdasarkan nilai unik suatu bidang. |
|
|
Filter |
Mengelompokkan statistik berdasarkan satu kondisi filter. |
|
|
Filters |
Mengelompokkan statistik berdasarkan beberapa kondisi filter. |
|
|
Statistik metrik |
Min |
Menghitung nilai minimum. |
|
Max |
Menghitung nilai maksimum. |
|
|
Avg |
Menghitung nilai rata-rata. |
|
|
Sum |
Menghitung jumlah total. |
|
|
Count |
Menghitung jumlah entri. |
|
|
Cardinality |
Menghitung jumlah nilai unik. |
|
|
Percentiles |
Menghitung persentil. |
|
|
Log yang dikembalikan |
Top hits |
Mengembalikan log yang paling sesuai per kelompok. |
Perbedaan dari Elasticsearch standar
-
API kompatibel Elasticsearch tidak mendukung pembaruan data.
-
API kompatibel Elasticsearch tidak mendukung kueri berbasis skrip.
-
Satu Logstore mendukung data hingga petabyte, sehingga rollover indeks tidak diperlukan.
-
Indeks tidak dibuat secara otomatis. Buat melalui API atau Konsol. Buat indeks.
-
Bidang-bidang berikut memiliki pemetaan khusus dalam DSL Elasticsearch.
Elasticsearch
Simple Log Service
Deskripsi
@timestamp__time__Bidang
@timestampdipetakan ke bidang__time__Simple Log Service dalam kueri._idNone
Dipetakan ke bidang
_idjika bidang tersebut ada dalam data Simple Log Service. Jika bidang_idtidak ada, bidang tersebut akan diisi otomatis denganuuidatau_pack_meta.
Otorisasi RAM
Berikan izin kueri dan tulis kepada Pengguna Resource Access Management (RAM) untuk API kompatibel Elasticsearch menggunakan salah satu kebijakan akses berikut.
-
Kebijakan sistem: mudah dikonfigurasi.
-
Kebijakan kustom: memberikan izin detail halus tetapi kompleks untuk dikonfigurasi.
Otorisasi sederhana
Gunakan kebijakan sistem untuk memberikan izin kueri dan tulis kepada Pengguna RAM untuk API kompatibel Elasticsearch. Kelola izin Pengguna RAM.
|
Nama kebijakan sistem |
Izin kueri |
Izin tulis |
|
AliyunLogFullAccess |
Ya |
Ya |
|
AliyunLogReadOnlyAccess |
Ya |
Tidak |
Kebijakan kustom
Gunakan kebijakan kustom untuk izin detail halus. Buat kebijakan kustom. Kelola izin Pengguna RAM.
-
Berikan izin kueri dan tulis untuk API kompatibel 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/*" } ] } -
Berikan izin hanya untuk kueri pada API kompatibel 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/*" } ] } -
Berikan izin hanya untuk menulis pada API kompatibel Elasticsearch.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "log:PostLogStoreLogs" ], "Resource": "acs:log:*:*:project/*" } ] }