Sintaks string kueri merupakan fitur Domain-Specific Language (DSL) Simple Log Service (SLS) yang memungkinkan Anda memfilter data dengan cepat dan menyederhanakan pernyataan kondisional. Topik ini menjelaskan aturan sintaks umum untuk string kueri.
Daftar fungsi
Fungsi-fungsi berikut mendukung sintaks string kueri.
|
Type |
Function |
Scenario |
|
Event check function |
Gunakan string kueri untuk menentukan apakah nilai bidang suatu event memenuhi kondisi tertentu. |
|
|
Resource function |
Mengambil dan mengembalikan data tabular dari Logstore. Mendukung pemfilteran dengan daftar hitam dan daftar putih yang dikonfigurasi melalui string kueri. |
|
|
Mengambil dan mengembalikan data tabular dari RDS MySQL. Mendukung pemfilteran dengan daftar hitam dan daftar putih yang dikonfigurasi melalui string kueri. |
Ikhtisar fitur
Tabel berikut mencantumkan fitur pencarian yang mendukung pencarian berdasarkan bidang (field search) dan pencarian teks lengkap (full text search).
|
Feature |
Field search |
Full text search |
|
Substring search |
Didukung |
Didukung |
|
Wildcard search menggunakan |
Didukung |
Didukung |
|
Exact match search |
Didukung |
Tidak didukung |
|
Regular expression search |
Didukung |
Tidak didukung |
|
Numeric range search |
Didukung |
Tidak didukung |
|
Numeric comparison |
Didukung |
Tidak didukung |
|
Logical operators: and, or, not, dan kombinasi |
Didukung |
Didukung |
Pelarian karakter
Dalam sintaks string kueri, Anda harus melakukan pelarian (escape) terhadap karakter khusus seperti tanda bintang (*) dan garis miring terbalik (\).
-
Pelarian nama bidang
Jangan membungkus nama bidang dalam tanda kutip ganda (""). Jika nama bidang mengandung karakter khusus, lakukan pelarian dengan garis miring terbalik (\). Contohnya:
-
\*\(1+1\)\?: abc: Lakukan pelarian dengan garis miring terbalik (\). -
__tag__\:__container_name__: abc: Lakukan pelarian dengan garis miring terbalik (\). -
chinese_field: abc: Karakter Tionghoa tidak perlu dilakukan pelarian. -
"content": abc: Definisi tidak valid. Jangan membungkus nama bidang dalam tanda kutip ganda ("").
-
-
Escape nilai pencarian
-
Jika nilai mengandung tanda kutip ganda ("") atau garis miring terbalik (\), lakukan pelarian dengan garis miring terbalik (\). Contohnya,
content: "abc\"xy\\z".CatatanNilai pencarian harus dibungkus dalam tanda kutip ganda (""). Anda dapat membungkus string luar dengan tanda kutip tunggal ('') dan nilai pencarian dalam dengan tanda kutip ganda (""). Contohnya,
e_search("domain: '/url/test.jsp'")salah. Format yang benar adalahe_search('domain: "/url/test.jsp"'). -
Ketika Anda mencari tanda bintang (*) atau tanda tanya (?), lakukan pelarian dengan garis miring terbalik (\). Jika tidak, karakter tersebut akan dianggap sebagai karakter wildcard.
-
String yang hanya berisi karakter Tionghoa, huruf, angka, garis bawah (_), tanda hubung (-), tanda bintang (*), atau tanda tanya (?) tidak memerlukan tanda kutip ganda (""). Jika tidak, Anda harus membungkus string tersebut dalam tanda kutip ganda (""). Contohnya:
-
status: "\*\?()[]:=": Bungkus nilai dalam tanda kutip ganda (""). Lakukan pelarian terhadap tanda bintang (*) dan tanda tanya (?) dengan garis miring terbalik (\). Karakter lain tidak perlu dilakukan pelarian. -
content: ()[]:=: Definisi tidak valid. Nilai harus dibungkus dalam tanda kutip ganda (""). -
status: active\*testdanstatus: active\?test: Nilai bidang hanya berisi huruf dan tanda bintang (*) atau tanda tanya (?). Anda hanya perlu melakukan pelarian terhadap tanda bintang (*) atau tanda tanya (?). Tidak perlu membungkus nilai dalam tanda kutip ganda ("").
-
-
Pencarian substring
-
Pencarian teks lengkap
Cari substring di seluruh bidang.
-
Sintaks
e_search('substring') -
Contoh
-
e_search('"error"'): Cari substring. -
e_search('"active error"'): Cari substring lengkap yang mengandung spasi. -
e_search('active error'): Cari beberapa substring. Substring-substring tersebut secara default digabungkan dengan operator OR.
-
-
-
Pencarian berdasarkan bidang
Cari substring dalam bidang tertentu.
-
Sintaks
e_search('...') -
Contoh
-
e_search('status: active'): Pencarian substring. -
e_search('author: "john smith"'): Cari substring yang mengandung spasi.
Catatane_search('field: active error')setara denganfield:active OR "error". Ini mencari `active` di bidang field atau melakukan pencarian teks lengkap untuk `error`. -
-
Pencarian wildcard
Tanda bintang (*) merepresentasikan nol atau lebih karakter. Tanda tanya (?) merepresentasikan satu karakter, termasuk karakter lebar seperti karakter Tionghoa.
-
Pencarian teks lengkap
Cari substring di seluruh bidang.
-
Sintaks
e_search('substring') -
Contoh
-
e_search('active*test'): Cocok dengan nol atau lebih karakter. Karena string mengandung tanda bintang (*), Anda tidak perlu membungkusnya dalam tanda kutip ganda (""). -
e_search('occurs*error'): Cocok dengan nol atau lebih karakter. Misalnya, dapat mencocokkanoccurs errordanoccurs critical error. -
e_search('active?good'): Cocok dengan satu karakter. Karena string mengandung tanda tanya (?), Anda tidak perlu membungkusnya dalam tanda kutip ganda (""). -
e_search('ac*tive?good'): Cocok dengan pola tertentu. -
e_search('ac*tive??go*od'): Mendukung beberapa wildcard.
-
-
-
Pencarian berdasarkan bidang
Cari substring dalam bidang tertentu.
-
Sintaks
e_search('field_name:substring') -
Contoh
-
e_search('status: active*test'): Cocok dengan nol atau lebih karakter. -
e_search('status: active?good'): Cocok dengan satu karakter.
-
-
Pencocokan eksak
Pencocokan eksak mengharuskan seluruh nilai bidang cocok persis.
-
Sintaks
e_search('field_name==exact_match_string') -
Contoh
-
e_search('author== "john smith"'): Bidang author cocok persis dengan john smith. -
e_search('status== ac*tive?good'): Gunakan bersama karakter wildcard.
-
Pencocokan ekspresi reguler
Pencocokan ekspresi reguler lebih kuat dibandingkan pencocokan wildcard.
-
Sintaks
e_search('field_name~=regular_expression_string')Catatan-
Karena ekspresi reguler dapat mengandung garis miring terbalik (\), gunakan
runtuk mencegah pelarian. -
Secara default, ini melakukan pencocokan parsial. Untuk melakukan pencocokan eksak, tambahkan
^di awal dan$di akhir ekspresi.
-
-
Contoh
-
e_search('status~= "\d+"'): Bidang status mengandung angka. -
e_search('status~= "^\d+$"'): Bidang status berupa angka.
-
Perbandingan numerik
Bandingkan nilai numerik.
-
Perbandingan numerik langsung
Gunakan operator
>,>=,=,<, dan<=untuk 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') # < 18 -
Perbandingan rentang numerik
Gunakan interval tertutup. Anda dapat menggunakan tanda bintang (*) untuk menentukan tanpa batas.
e_search('count: [100, 200]') # >=100 dan <=200 e_search('count: [*, 200]') # <=200 e_search('count: [200, *]') # >=200
Hubungan logika
Anda dapat menggabungkan pencarian apa pun dengan operator logika. Anda juga dapat menggunakan tanda kurung () untuk menyusun kondisi secara bersarang.
|
Logical Relationship |
Keyword |
|
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 not
Hubungan logika juga didukung untuk pencocokan substring:
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
Gunakan string pencarian untuk memverifikasi apakah suatu bidang ada atau memenuhi kondisi tertentu.
-
e_search('field: *'): Bidang ada. -
e_search('not field:*'): Bidang tidak ada. -
e_search('not field:""'): Bidang tidak ada. -
e_search('field: "?"'): Bidang ada dan nilainya tidak kosong. -
e_search('field==""'): Bidang ada dan nilainya kosong. -
e_search('field~=".+"'): Bidang ada dan nilainya tidak kosong. -
e_search('not field~=".+"'): Bidang tidak ada atau nilainya kosong. -
e_search('not field==""'): Bidang tidak ada atau nilainya tidak kosong.