Sintaks string kueri merupakan fitur dari bahasa domain-spesifik (DSL) Simple Log Service (SLS). Sintaks ini dapat digunakan untuk menyaring data dengan cepat dan menyederhanakan pernyataan kondisional. Topik ini menjelaskan aturan sintaks umum untuk string kueri.
Daftar fungsi
Anda dapat menggunakan sintaks string kueri dengan fungsi-fungsi berikut ini.
Tipe | Fungsi | Skenario |
Fungsi pemeriksaan event | Gunakan string kueri untuk memeriksa apakah nilai bidang dalam sebuah event memenuhi kondisi tertentu. | |
Fungsi sumber daya | Mendapatkan data dari penyimpanan log dan mengembalikannya sebagai tabel. Gunakan string kueri untuk mengonfigurasi daftar hitam dan daftar putih untuk penyaringan. | |
Mendapatkan data dari database RDS for MySQL dan mengembalikannya sebagai tabel. Gunakan string kueri untuk mengonfigurasi daftar hitam dan daftar putih untuk penyaringan. |
Ikhtisar fitur
Tabel berikut mencantumkan fitur pencarian yang mendukung pencarian bidang dan pencarian teks penuh.
Fitur | Field Search | Pencarian teks penuh |
Pencarian substring | Didukung | Didukung |
Pencarian wildcard ( | Didukung | Didukung |
Pencocokan tepat | Didukung | Tidak didukung |
Pencarian ekspresi reguler | Didukung | Tidak didukung |
Pencarian rentang numerik | Didukung | Tidak didukung |
Perbandingan numerik | Didukung | Tidak didukung |
Operator logika (and, or, not) dan kombinasi | Didukung | Didukung |
Karakter escaping
Dalam sintaks string kueri, Anda harus meloloskan karakter khusus seperti tanda bintang (*) dan garis miring terbalik (\).
Meloloskan Nama Bidang
Nama bidang tidak boleh diletakkan di dalam tanda kutip ganda (""). Jika nama bidang mengandung karakter khusus, loloskan dengan garis miring terbalik (\). Contohnya:
\*\(1+1\)\?: abc: Loloskan karakter khusus menggunakan garis miring terbalik (\).__tag__\:__container_name__: abc: Loloskan karakter khusus menggunakan garis miring terbalik (\).Chinese_Field: abc: Tidak perlu meloloskan karakter Cina."content": abc: Definisi tidak valid. Jangan letakkan nama bidang di dalam tanda kutip ganda ("").
Meloloskan Nilai Pencarian
Jika nilai berisi tanda kutip ganda ("") atau garis miring terbalik (\), loloskan dengan garis miring terbalik (\). Contohnya,
content: "abc\"xy\\z".CatatanNilai pencarian hanya dapat diletakkan di dalam tanda kutip ganda (""). Gunakan tanda kutip tunggal ('') untuk mengapit string luar dan tanda kutip ganda ("") untuk mengapit nilai pencarian dalam. Contohnya,
e_search("domain: '/url/test.jsp'")salah. Format yang benar adalahe_search('domain: "/url/test.jsp"').Saat mencari tanda bintang (*) atau tanda tanya (?), loloskan dengan garis miring terbalik (\). Jika tidak, karakter tersebut akan diperlakukan sebagai karakter wildcard.
Jika nilai hanya berisi karakter Cina, huruf, angka, garis bawah (_), tanda hubung (-), tanda bintang (*), atau tanda tanya (?), Anda tidak perlu meletakkannya di dalam tanda kutip ganda (""). Dalam semua kasus lainnya, nilai harus diletakkan di dalam tanda kutip ganda (""). Contohnya:
status: "\*\?()[]:=": Letakkan nilai di dalam tanda kutip ganda ("") dan loloskan tanda bintang (*) serta tanda tanya (?) dengan garis miring terbalik (\). Karakter lainnya tidak perlu diloloskan.content: ()[]:=: Definisi tidak valid. Nilai harus diletakkan di dalam tanda kutip ganda ("").status: active\*test,status: active\?test: Nilai bidang hanya berisi huruf, tanda bintang (*), dan tanda tanya (?). Dalam hal ini, Anda hanya perlu meloloskan tanda bintang (*) atau tanda tanya (?). Anda tidak perlu meletakkan nilai di dalam tanda kutip ganda ("").
Pencarian substring
Pencarian Teks Penuh
Mencari substring di semua bidang.
Sintaks
e_search('substring')Contoh
e_search('"fault"'): Mencari substring Cina.e_search('"active error"'): Mencari substring lengkap yang berisi spasi.e_search('active error'): Mencari beberapa substring. Operator OR digunakan secara default di antara substring.
Pencarian Bidang
Mencari substring di bidang tertentu.
Sintaks
e_search('...')Contoh
e_search('status: active'): Melakukan pencarian substring.e_search('author: "john smith"'): Mencari substring yang berisi spasi.
Catatane_search('field: active error')setara denganfield:active OR "error". Kueri ini mencari "active" di bidang field atau melakukan pencarian teks penuh untuk "error".
Pencarian wildcard
Tanda bintang (*) mewakili nol atau lebih karakter, sedangkan tanda tanya (?) mewakili satu karakter. Keduanya juga dapat digunakan untuk mewakili karakter lebar seperti karakter Cina.
Pencarian Teks Penuh
Cari substring di semua bidang.
Sintaks
e_search('substring')Contoh
e_search('active*test'): Cocokkan nol atau lebih karakter. Karena string berisi tanda bintang (*), tidak perlu meletakkannya di dalam tanda kutip ganda ("").e_search('occurs*fault'): Cocokkan nol atau lebih karakter. Dapat cocok denganoccurs faultdanoccurs critical fault.e_search('active?good'): Cocokkan satu karakter. Karena string berisi tanda tanya (?), tidak perlu meletakkannya di dalam tanda kutip ganda ("").e_search('ac*tive?good'): Melakukan pencocokan pola.e_search('ac*tive??go*od'): Anda dapat menggunakan beberapa wildcard secara bersamaan.
Pencarian Bidang
Cari substring di bidang tertentu.
Sintaks
e_search('field_name:substring')Contoh
e_search('status: active*test'): Cocokkan nol atau lebih karakter.e_search('status: active?good'): Cocokkan satu karakter.
Cocok tepat
Pencocokan tepat mengharuskan nilai bidang cocok sepenuhnya dari awal hingga akhir.
Sintaks
e_search('field_name==exact_match_string')Contoh
e_search('author== "john smith"'): Nilai bidang author persis sama dengan john smith.e_search('status== ac*tive?good'): Operator ini dapat digunakan bersama karakter wildcard.
Pencocokan ekspresi reguler
Pencocokan ekspresi reguler merupakan metode pencocokan yang lebih kuat dibandingkan pencocokan wildcard.
Sintaks
e_search('field_name~=regular_expression_string')CatatanKarena ekspresi reguler dapat mengandung garis miring terbalik (\), Anda dapat menggunakan
runtuk mencegah pelolosan.Secara default, pencocokan sebagian dilakukan. Untuk pencocokan tepat, tambahkan
^di awal dan$di akhir ekspresi.
Contoh
e_search('status~= "\d+"'): Nilai bidang status berisi digit.e_search('status~= "^\d+$"'): Nilai bidang status adalah angka.
Perbandingan numerik
Anda dapat membandingkan nilai numerik.
Perbandingan Numerik Langsung
Anda dapat menggunakan
>,>=,=,<, dan<=untuk melakukan perbandingan.e_search('age >= 18') # >=18 e_search('age > 18') # > 18 e_search('age = 18') # = 18 e_search('age <= 18') # <=18 e_search('age < 18') # < 18Perbandingan Rentang Numerik
Anda dapat menggunakan interval tertutup. Gunakan tanda bintang (*) untuk menunjukkan batas terbuka.
e_search('count: [100, 200]') # >=100 and <=200 e_search('count: [*, 200]') # <=200 e_search('count: [200, *]') # >=200
Hubungan logika
Hubungan logika antara pencarian didukung. Anda juga dapat menggunakan tanda kurung () untuk nesting.
Hubungan logika | Kata kunci |
AND |
|
OR |
|
NOT |
|
Contoh:
e_search('abc OR xyz') # Operator relasional tidak peka huruf besar/kecil.
e_search('abc and (xyz or zzz)')
e_search('abc and not (xyz and not zzz)')
e_search('abc && xyz') # and
e_search('abc || xyz') # or
e_search('abc || !xyz') # or notPencocokan substring juga mendukung hubungan logika:
e_search('field: (abc OR xyz)') # Bidang berisi abc atau xyz.
e_search('field: (abc OR not xyz)') # Bidang berisi abc atau tidak berisi xyz.
e_search('field: (abc && !xyz)') # Bidang berisi abc dan tidak berisi xyz.Pemeriksaan bidang
Anda dapat menggunakan string kueri untuk memeriksa bidang.
e_search('field: *'): Bidang tersedia.e_search('not field:*'): Bidang tidak tersedia.e_search('not field:""'): Bidang tidak tersedia.e_search('field: "?"'): Bidang tersedia dan nilainya tidak kosong.e_search('field==""'): Bidang tersedia dan nilainya kosong.e_search('field~=".+"'): Bidang tersebut ada dan nilainya tidak kosong.e_search('not field~=".+"'): Bidang tidak tersedia atau nilainya kosong.e_search('not field==""'): Bidang tidak tersedia atau nilainya tidak kosong.