全部产品
Search
文档中心

Simple Log Service:Sintaksis pencarian dan fungsi

更新时间:Oct 16, 2025

Simple Log Service (SLS) memungkinkan Anda menjalankan pernyataan pencarian untuk menanyakan log yang disimpan dalam logstore. Hasil pencarian dapat digunakan secara independen atau sebagai input untuk pernyataan analitik guna melakukan analisis data kompleks.

Prasyarat

Indeks telah dibuat.

Sintaksis dasar

Setiap pernyataan kueri terdiri dari pernyataan pencarian dan pernyataan analitik, dipisahkan oleh batang vertikal (|). Contoh pernyataan kueri:

* | SELECT status, count(*) AS PV GROUP BY status

Pernyataan

Deskripsi

Pernyataan pencarian

Pernyataan pencarian menentukan satu atau lebih kondisi pencarian. Pernyataan pencarian, yang bisa berupa kata kunci, nilai numerik, rentang, atau asterisk (*), menentukan kondisi pencarian. Menentukan spasi atau asterisk (*) mencocokkan semua log.

Penting

Tentukan hingga 30 kondisi pencarian dalam sebuah pernyataan pencarian.

Pernyataan analitik

Penting

Anda tidak perlu menentukan klausa FROM atau WHERE dalam pernyataan analitik. Secara default, semua data logstore saat ini dianalisis. Pernyataan analitik tidak peka huruf besar kecil, tidak mendukung offset, dan tidak memerlukan tanda titik koma (;).

Pernyataan analitik digunakan untuk mengumpulkan atau menganalisis data dalam hasil pencarian atau semua data dalam logstore. Untuk informasi lebih lanjut tentang fungsi dan sintaksis yang didukung oleh SLS untuk menganalisis log, lihat topik-topik berikut:

Proses penulisan pernyataan pencarian

Untuk menulis pernyataan kueri, ikuti langkah-langkah berikut:

Langkah 1: Pilih jenis pencarian

Penting

Hasil kueri dan analisis bervariasi berdasarkan konfigurasi indeks. Jika Anda membuat indeks teks penuh dan indeks bidang, indeks bidang akan diutamakan.

Pencarian diklasifikasikan menjadi pencarian teks penuh dan pencarian berbasis bidang berdasarkan tipe indeks. Berikut adalah perbedaan antara kedua jenis pencarian tersebut:

  • Jika Anda hanya membuat indeks teks penuh untuk logstore Anda, gunakan sintaksis pencarian teks penuh untuk menentukan kondisi kueri.

  • Jika Anda membuat indeks bidang untuk logstore Anda, sintaksis pencarian bervariasi berdasarkan tipe data bidang.

    • double dan long: Gunakan sintaksis pencarian berbasis bidang untuk menentukan kondisi kueri.

    • text: Jika bidang terkait dari suatu kata kunci diketahui dan indeks bidang dibuat, gunakan sintaksis pencarian berbasis bidang untuk kondisi kueri. Jika bidang terkait tidak diketahui, gunakan sintaksis pencarian teks penuh.

      • Jika pengindeksan teks penuh dinonaktifkan, hanya pencarian teks penuh yang dapat dilakukan pada bidang-bidang yang memiliki pengindeksan teks individu.

      • Jika indeks teks penuh dibuat, kueri data dari semua bidang, dengan semua data yang diindeks bertipe teks.

Pencarian teks penuh

Data tidak dapat diquery dari bidang tertentu menggunakan sintaksis pencarian teks penuh. Sintaksis pencarian teks penuh: kata kunci1 [ [ and | or | not ] kata kunci2 ] ....

Kata kunci1 menentukan kata kunci untuk menanyakan data. Asterisk (*) dan tanda tanya (?) juga dapat digunakan untuk pencocokan fuzzy. Untuk menggabungkan kondisi kueri, gunakan operator seperti and dan or.

  • Contoh 1

    Kueri log yang mengandung kata kunci GET. Sintaksis pencarian: GET.

  • Contoh 2

    Kueri log yang mengandung kata kunci GET atau POST. Sintaksis pencarian: GET or POST.

  • Contoh 3

    Kueri log yang dimulai dengan Jo, seperti Joe dan Jon. Sintaksis pencarian: Jo?.

Pencarian berbasis bidang

Ketika bidang diindeks, lakukan operasi spesifik tipe, seperti perbandingan numerik dan pencocokan ekspresi reguler.

Penting
  • indexname1 menentukan nama bidang yang datanya ingin Anda kueri. Jika nama proper seperti nama bidang atau nama tabel berisi karakter khusus seperti spasi dan karakter Mandarin atau kata kunci sintaksis seperti and dan or, Anda harus mengapit nama proper tersebut dengan tanda kutip ganda (""). Untuk informasi selengkapnya, lihat Bagaimana cara menggunakan tanda kutip dalam pernyataan kueri?

  • Jika indeks dibuat untuk bidang tipe long atau double, gunakan operator perbandingan berikut: >, >=, <, <=, =, dan in.

Sintaksis pencarian

indexname1 [ : | > | >= | < | <= | = | in ] keyword1 [ [ and | or | not ] indexname2 ... ]
  • Contoh 1

    Kueri log yang nilainya bidang request_method adalah GET. Sintaksis pencarian: request_method: GET.

  • Contoh 2

    Kueri log yang nilainya bidang request_time_msec lebih besar dari 50. Sintaksis pencarian: request_time_msec>50. Bidang request_time_msec bertipe double.

  • Contoh 3

    Kueri log yang nilainya bidang request_method adalah GET dan nilai bidang request_time_msec lebih besar dari 50. Sintaksis pencarian: request_method: GET and request_time_msec>50.

Langkah 2: Pilih tipe data bidang

Saat menulis pernyataan pencarian, pertimbangkan tipe data bidang dan gunakan operator yang benar untuk mendapatkan log secara efisien dan akurat.

Tipe data bidang

Tipe data bidang

Deskripsi

Operator yang didukung

teks

Kueri data tipe string dengan menyetel tipe data bidang terkait ke teks. Secara default, jika Anda mengaktifkan pengindeksan teks penuh, tipe data semua bidang dalam log kecuali bidang __time__ diatur ke text.

and, or, not, (), :, "", \, *, dan ?.

long atau double

Kueri nilai bidang hanya dengan menggunakan rentang numerik jika Anda menyetel tipe data bidang ke long atau double.

  • Jika Anda tidak menyetel tipe data bidang ke double atau long atau sintaksis rentang numerik tidak valid, SLS melakukan pencarian teks penuh dan hasil pencarian mungkin berbeda dari hasil yang diharapkan.

    Sebagai contoh, jika Anda menjalankan pernyataan pencarian owner_id>100 dan tipe data bidang owner_id bukan double atau long, log yang mengandung owner_id, >, dan 100 akan dikembalikan. Dalam contoh ini, tanda lebih besar (>) bukan pemisah.

  • Jika Anda mengubah tipe data bidang dari text menjadi double atau long, gunakan hanya tanda sama dengan (=) untuk menanyakan data. Jika Anda ingin menggunakan rentang dan operator perbandingan seperti tanda lebih besar (>) dan kurang dari (<) untuk menanyakan data, Anda harus mengindeks ulang data. Untuk informasi lebih lanjut, lihat Pengindeksan ulang log untuk logstore.

and, or, not, (), >. >=, <, <=, =, dan in.

json

Tetapkan tipe data bidang dalam objek JSON ke long, double, atau text berdasarkan nilai bidang, dan aktifkan Analitik untuk bidang tersebut.

Tentukan operator berdasarkan tipe data bidang dalam objek JSON.

Operator

Penting
  • Huruf operator in harus dalam huruf kecil. Operator lainnya tidak peka huruf besar kecil.

  • SLS mendukung operator berikut: sort, asc, desc, group by, avg, sum, min, max, dan limit. Jika Anda ingin menggunakan operator ini sebagai kata kunci, Anda harus mengapit operator tersebut dalam tanda kutip ganda ("").

  • Operator berikut terdaftar dalam urutan prioritas menurun:

    1. Titik dua (:)

    2. Tanda kutip ganda ("")

    3. Tanda kurung ()

    4. dan bukan

    5. or

Operator

Deskripsi

:

Operator ini digunakan untuk pencarian berbasis bidang berdasarkan format key:value. Contoh: request_method:GET.

Jika nama bidang atau nilai bidang mengandung karakter khusus seperti spasi, titik dua (:), dan tanda hubung (-), Anda harus mengapit nama bidang atau nilai bidang dalam tanda kutip ganda (""). Contoh: "file info":apsara.

and

Operator and. Contoh: request_method:GET and status:200.

Jika beberapa kata kunci ditentukan tanpa operator eksplisit, mereka secara implisit digabungkan dengan and. Sebagai contoh, GET 200 cn-shanghai setara dengan GET and 200 and cn-shanghai.

or

Operator or. Contoh: request_method:GET or status:200.

not

Operator not. Contoh: request_method:GET not status:200 atau not status:200.

( )

Operator ini digunakan untuk meningkatkan prioritas kondisi kueri yang diapit dalam tanda kurung (). Contoh: (request_method:GET or request_method:POST) and status:200.

""

Operator ini digunakan untuk mengapit kata kunci sintaksis. Jika kata kunci sintaksis diapit dalam tanda kutip ganda (""), kata kunci tersebut diperlakukan sebagai string literal, bukan operator. Dalam pencarian berbasis bidang, kata-kata yang diapit dalam tanda kutip ganda ("") dianggap sebagai satu kesatuan.

  • Jika nama bidang atau nilai bidang mengandung karakter khusus seperti spasi, karakter Cina, titik dua (:), dan tanda hubung (-) atau kata kunci sintaksis seperti and dan or, Anda harus mengapit nama bidang atau nilai bidang dalam tanda kutip ganda (""). Sebagai contoh, "and" mengembalikan log yang mengandung kata "and", yang diperlakukan sebagai istilah, bukan sebagai operator.

  • SLS mendukung operator berikut: sort, asc, desc, group by, avg, sum, min, max, dan limit. Jika Anda ingin menggunakan operator ini sebagai kata kunci, Anda harus mengapit operator dalam tanda kutip ganda ("").

  • Jika sebuah log diproses dengan fitur transformasi data atau plugin Logtail, kunci dalam bidang __tag__:__client_ip__ diubah menjadi kunci umum. Jika Anda ingin mencari log tersebut, Anda harus mengapit nama bidang __tag__:__client_ip__ dalam tanda kutip ganda ("") dalam pernyataan pencarian. Contoh: "__tag__:__client_ip__":192.0.2.1. Bidang __tag__:__client_ip__ adalah bidang cadangan dalam SLS. Bidang ini menunjukkan alamat IP dari host tempat log dikumpulkan. Untuk informasi lebih lanjut, lihat Bidang cadangan.

\

Karakter escape. Karakter ini digunakan untuk meloloskan tanda kutip ganda (""). Tanda kutip ganda ("") hanya dapat menunjukkan dirinya sendiri setelah diloloskan. Sebagai contoh, jika isi log adalah instance_id:nginx"01", jalankan pernyataan instance_id:nginx\"01\" untuk mencari log tersebut.

*

Karakter wildcard, yang digunakan untuk mencocokkan nol atau lebih karakter. Contoh: host:www*com.

Catatan

Untuk performa, pencarian wildcard tidak memindai semua data. Sebagai gantinya, SLS pertama-tama menemukan hingga 100 istilah yang cocok dari kamus indeks, lalu mengembalikan log yang mengandung salah satu dari istilah tersebut.

?

Karakter wildcard, yang digunakan untuk mencocokkan satu karakter. Contoh: host:aliyund?c.

>

Operator ini digunakan untuk menanyakan log di mana nilai suatu bidang lebih besar dari nilai numerik tertentu. Contoh: request_time>100.

>=

Operator ini digunakan untuk menanyakan log di mana nilai suatu bidang lebih besar dari atau sama dengan nilai numerik tertentu. Contoh: request_time>=100.

<

Operator ini digunakan untuk menanyakan log di mana nilai suatu bidang kurang dari nilai numerik tertentu. Contoh: request_time<100.

<=

Operator ini digunakan untuk menanyakan log di mana nilai suatu bidang kurang dari atau sama dengan nilai numerik tertentu. Contoh: request_time<=100.

=

Operator ini digunakan untuk menanyakan log di mana nilai suatu bidang sama dengan nilai numerik tertentu. Tanda sama dengan (=) dan titik dua (:) memiliki efek yang sama pada bidang bertipe double atau long. Sebagai contoh, request_time=100 setara dengan request_time:100.

in

Operator ini digunakan untuk menanyakan log di mana nilai suatu bidang berada dalam rentang numerik tertentu. Kurung siku [] menunjukkan interval tertutup, dan tanda kurung () menunjukkan interval terbuka. Spasi digunakan untuk memisahkan dua angka dalam rentang numerik. Contoh: request_time in [100 200] atau request_time in (100 200].

Penting

Huruf operator in harus dalam huruf kecil.

__source__

Operator ini digunakan untuk menanyakan log dari sumber log tertentu. Karakter wildcard didukung. Contoh: __source__:192.0.2.*.

Penting

Bidang __source__ adalah bidang cadangan dalam SLS. Bidang ini dapat disingkat menjadi source. Jika Anda mengonfigurasi bidang source kustom, bidang kustom tersebut akan bertentangan dengan bidang cadangan source dalam SLS. Jika Anda ingin mencari bidang kustom, Anda harus menggunakan Source atau SOURCE dalam pernyataan pencarian.

__tag__

Operator ini digunakan untuk menanyakan log menggunakan metadata. Contoh: __tag__:__receive_time__:1609837139.

__topic__

Operator ini digunakan untuk menanyakan log dari topik log tertentu. Contoh: __topic__:nginx_access_log.

Langkah 3: Pilih mode pencocokan

Gunakan pencarian tepat atau pencarian fuzzy berdasarkan kata kunci dan kebutuhan bisnis Anda.

Tipe pencarian

Deskripsi

Contoh

Pencarian tepat

Kata lengkap digunakan untuk pencarian.

SLS menggunakan segmentasi kata untuk menanyakan log. Dalam pencarian tepat, frasa tidak dapat sepenuhnya cocok. Sebagai contoh, pernyataan pencarian abc def mengembalikan log yang mengandung abc dan def. Frasa abc def tidak dapat sepenuhnya cocok. Jika Anda ingin frasa abc def sepenuhnya cocok, lakukan pencarian frasa atau gunakan klausa LIKE. Untuk informasi lebih lanjut, lihat Pencarian frasa dan Bagaimana cara menanyakan log menggunakan pencocokan tepat?.

  • host:example.com: mengembalikan log di mana nilai bidang host mengandung example.com.

  • PUT and cn-shanghai: mengembalikan log yang mengandung kata kunci PUT dan cn-shanghai.

  • * | Select * where http_user_agent like '%like Gecko%': mengembalikan log di mana nilai bidang http_user_agent mengandung frasa like Gecko.

  • #"redo_index/1": mengembalikan log yang mengandung frasa redo_index/1.

Pencarian fuzzy

Tambahkan asterisk (*) atau tanda tanya (?) sebagai karakter wildcard di tengah atau akhir kata dalam pernyataan pencarian saat Anda melakukan pencarian fuzzy. Kata tersebut harus memiliki panjang 1 hingga 64 karakter. Jika sebuah kata mengandung karakter wildcard, SLS mencari semua log untuk menanyakan 100 kata yang cocok dengan kata tersebut. Lalu, SLS mengembalikan log yang mengandung satu atau lebih dari kata-kata tersebut. Jika Anda menentukan kata yang lebih akurat, hasil pencarian akan lebih akurat.

Penting
  • Asterisk (*) atau tanda tanya (?) tidak dapat ditambahkan di awal kata.

  • Tipe data long dan double tidak mendukung asterisk (*) atau tanda tanya (?) dalam pencarian fuzzy. Tentukan rentang numerik untuk melakukan pencarian fuzzy. Contoh: status in [200 299].

Pencarian fuzzy adalah kueri sampel yang menggunakan mekanisme berikut:

  • Jika Anda mengaktifkan fitur pengindeksan bidang dan menentukan bidang untuk menanyakan log, SLS mendapatkan sampel acak dari data terindeks bidang tersebut dan mengembalikan hasil. SLS tidak melakukan pemindaian teks penuh.

  • Jika Anda mengaktifkan fitur pengindeksan teks penuh dan tidak menentukan bidang untuk menanyakan log, SLS mendapatkan sampel acak dari data terindeks semua bidang dan mengembalikan hasil. SLS tidak melakukan pemindaian teks penuh.

  • request_time>60 and request_method:Ge*: mengembalikan log di mana nilai bidang request_time lebih besar dari 60 dan nilai bidang request_method dimulai dengan Ge.

  • addr*: menanyakan 100 kata yang dimulai dengan addr dalam semua log dan mengembalikan log yang mengandung satu atau lebih dari kata-kata tersebut.

  • host:www.yl*: menanyakan 100 kata yang dimulai dengan www.yl dalam nilai bidang host dari semua log dan mengembalikan log yang mengandung satu atau lebih dari kata-kata tersebut.

Untuk informasi lebih lanjut, lihat Bagaimana cara menanyakan log menggunakan pencocokan fuzzy?.

Contoh pernyataan pencarian

Jika Anda menjalankan pernyataan pencarian pada log yang berbeda berdasarkan konfigurasi indeks yang berbeda, pernyataan tersebut mengembalikan hasil yang berbeda. Contoh yang disediakan dalam bagian ini didasarkan pada log sampel dan konfigurasi indeks berikut.

teks, double, dan long types

Log sampel

Log akses NGINX digunakan sebagai log sampel.

日志样例

Konfigurasi indeks

Buat indeks sebelum menjalankan pernyataan pencarian. Untuk memeriksa konfigurasi indeks, ikuti langkah-langkah berikut:

  1. Di halaman query and analysis logstore, pilih Index Attributes > Attributes.image

  2. Di panel Pencarian & Analisis, periksa apakah indeks bidang dikonfigurasi.索引

Contoh pencarian umum

Hasil pencarian yang diharapkan

Pernyataan pencarian

Debugging

Log yang mencatat permintaan GET yang berhasil (kode status: 200 hingga 299).

request_method:GET and status in [200 299]

Debugging

Log untuk permintaan GET yang tidak berasal dari wilayah China (Hangzhou).

request_method:GET not region:cn-hangzhou

Tidak ada

Log yang mencatat permintaan GET atau POST.

request_method:GET or request_method:POST

Debugging

Log yang tidak mencatat permintaan GET.

not request_method:GET

Debugging

Log yang mencatat permintaan GET atau POST yang berhasil.

(request_method:GET or request_method:POST) and status in [200 299]

Debug

Log yang mencatat permintaan GET atau POST yang gagal.

(request_method:GET or request_method:POST) not status in [200 299]

Debugging

Log yang mencatat permintaan GET yang berhasil (kode status: 200 hingga 299) dan durasi permintaan kurang dari 60 detik.

request_method:GET and status in [200 299] not request_time>=60

Debugging

Log di mana durasi permintaan sama dengan 60 detik.

request_time:60

Debugging

request_time=60

Debugging

Log di mana durasi permintaan lebih besar dari atau sama dengan 60 detik dan kurang dari 200 detik.

request_time>=60 and request_time<200

Debugging

request_time in [60 200)

Debugging

Apakah bidang request_time ada.

request_time:*

Debugging

Log di mana bidang request_time kosong atau nilai bidangnya adalah angka yang tidak valid.

(request_time:"") or (not request_time > -10000000000)

Debugging

Log yang berisi bidang request_time yang nilai bidangnya berupa angka.

request_time > -1000000000

Debugging

Log yang mengandung and.

"and"
Catatan

Kata and diperlakukan sebagai string literal, bukan operator.

Debugging

Log di mana nilai bidang metode permintaan adalah PUT.

"request method":PUT
Penting

Nama bidang metode permintaan mengandung spasi. Anda harus mengapit nama bidang dalam tanda kutip ganda ("") dalam pernyataan pencarian.

Tidak ada

Log yang topiknya HTTPS atau HTTP.

__topic__:HTTPS or __topic__:HTTP

Tidak ada

Log yang dikumpulkan dari host 192.0.2.1.

__tag__:__client_ip__:192.0.2.1

Bidang __tag__:__client_ip__ adalah bidang cadangan dalam SLS. Bidang ini menunjukkan alamat IP dari host tempat log dikumpulkan. Untuk informasi lebih lanjut, lihat Bidang cadangan.

Penting

Jika sebuah log diproses menggunakan fitur transformasi data atau plugin Logtail, kunci dalam bidang __tag__:__client_ip__ diubah menjadi kunci umum. Jika Anda ingin mencari log tersebut, Anda harus mengapit nama bidang __tag__:__client_ip__ dalam tanda kutip ganda ("") dalam pernyataan pencarian. Contoh: "__tag__:__client_ip__":192.0.2.1.

Tidak ada

Log di mana alamat IP cocok dengan 192.168.XX.XX.

* | select * from log where key like '192.168.%.%'

Untuk informasi lebih lanjut, lihat Gunakan klausa LIKE untuk menerapkan pencocokan fuzzy.

Tidak ada

Log di mana bidang remote_user tidak kosong.

not remote_user:""

Debugging

Log di mana bidang remote_user kosong.

remote_user:""

Debugging

Log di mana nilai bidang remote_user bukan null.

not remote_user:"null"

Debugging

Log yang tidak mengandung bidang remote_user.

not remote_user:*

Debugging

Log yang mengandung bidang remote_user.

remote_user:*

Debugging

Log di mana nilai bidang city bukan Shanghai.

not city:Shanghai
Catatan

Jika Anda ingin menanyakan string Cina, Anda harus mengaktifkan Include Chinese saat Anda mengonfigurasi indeks. Untuk informasi lebih lanjut, lihat Buat indeks.

Tidak ada

Contoh pencarian lanjutan

  • Pencarian fuzzy

    Hasil pencarian yang diharapkan

    Pernyataan pencarian

    Debugging

    Log yang mengandung kata-kata tertentu. Kata-kata tersebut dimulai dengan cn.

    cn*

    Debugging

    Log di mana nilai bidang region dimulai dengan cn.

    region:cn*

    Tidak ada

    Log di mana nilai bidang region mengandung cn*.

    region:"cn*"
    Catatan

    Dalam pernyataan pencarian ini, cn* adalah string lengkap. Contoh:

    • Jika isi log adalah region:cn*,en dan pemisahnya adalah koma (,), SLS membagi isi log menjadi region, cn*, dan en. Gunakan pernyataan pencarian untuk mencari log tersebut.

    • Jika isi log adalah region:cn*hangzhou, SLS menganggap cn*hangzhou sebagai satu kesatuan, sehingga tidak mungkin mencari log tersebut dengan pernyataan pencarian.

    Tidak ada

    Log yang mengandung kata-kata tertentu. Kata-kata tersebut dimulai dengan mozi, diakhiri dengan la, dan mencakup satu karakter antara mozi dan la.

    mozi?la

    Debugging

    Log yang mengandung kata-kata tertentu. Kata-kata tersebut dimulai dengan mo, diakhiri dengan la, dan mencakup nol atau lebih karakter antara mo dan la.

    mo*la

    Debugging

    Log yang mengandung kata-kata tertentu. Kata-kata tersebut dimulai dengan moz atau sa.

    moz* and sa*

    Debugging

    Log yang nilai bidang region-nya diakhiri dengan hai.

    Pernyataan pencarian tidak dapat menemukan log tersebut. Sebagai gantinya, gunakan klausa LIKE dalam pernyataan SQL. Untuk informasi lebih lanjut, lihat Gunakan klausa LIKE untuk menerapkan pencocokan fuzzy.

    * | select * from log where region like '%hai'

    Tidak ada

    Log di mana nilai bidang message dimulai dengan "get_time: 0..

    Gunakan sintaksis like dalam analisis SQL.

    *| select message where message like '"get_time: 0.%'

    Atau gunakan instruksi where dalam Bahasa Proses Terstruktur (SPL) untuk menyaring log.

    Tidak ada

  • Pencarian berbasis pemisah

    SLS membagi isi log menjadi beberapa kata berdasarkan pemisah yang Anda tentukan. Pemisah default adalah , '";=()[]{}?@<>/:\n\t\r. Jika Anda meninggalkan pengaturan Pemisah kosong, SLS memperlakukan seluruh nilai bidang sebagai satu istilah, yang hanya dapat dicari menggunakan pencocokan tepat atau pencarian fuzzy pada seluruh string. Untuk informasi lebih lanjut tentang cara menentukan pemisah, lihat Buat indeks.

    Sebagai contoh, nilai bidang http_user_agent adalah Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/192.0.2.0 Safari/537.2.

    • Jika Anda membiarkan Delimiter kosong, SLS menganggap nilai bidang tersebut sebagai satu kesatuan. Log tidak dapat dicari menggunakan pernyataan pencarian http_user_agent:Chrome.

    • Jika Anda menetapkan Delimiter ke , '";=()[]{}?@<>/:\n\t\r, SLS membagi nilai bidang menjadi Mozilla, 5.0, Windows, NT, 6.1, AppleWebKit, 537.2, KHTML, like, Gecko, Chrome, 192.0.2.0, Safari, dan 537.2. Log dapat dicari menggunakan pernyataan pencarian http_user_agent:Chrome.

    Penting

    Jika kata kunci pencarian mengandung pemisah, lakukan pencarian frasa atau gunakan klausa LIKE. Contoh:

    • Pencarian frasa: #"redo_index/1". Untuk informasi lebih lanjut, lihat Pencarian frasa.

    • Klausa LIKE: * | select * from log where key like 'redo_index/1'.

    Hasil pencarian yang diharapkan

    Pernyataan pencarian

    Debugging

    Log di mana nilai bidang http_user_agent mengandung Chrome.

    http_user_agent:Chrome

    Debugging

    Log di mana nilai bidang http_user_agent mengandung Linux dan Chrome.

    http_user_agent:Linux and http_user_agent:Chrome

    Debugging

    http_user_agent:"Linux Chrome"

    Debugging

    Log di mana nilai bidang http_user_agent berisi Firefox atau Chrome.

    http_user_agent:Firefox or http_user_agent:Chrome

    Debugging

    Log di mana nilai bidang request_uri mengandung /request/path-2.

    request_uri:/request/path-2

    Debugging

    Log di mana nilai bidang request_uri dimulai dengan /request dan tidak mengandung /file-0.

    request_uri:/request* not request_uri:/file-0

    Debugging

    Log di mana frasa redo_index/1 sepenuhnya cocok.

    • #"redo_index/1"

    • * | select * from log where key like 'redo_index/1'

    Catatan

    Pencarian frasa atau klausa LIKE dapat digunakan untuk pencocokan tepat. Jika Anda melakukan pencarian tepat, kata-kata seperti redo_index dan 1 akan cocok.

    Tidak ada

Contoh kueri dalam kasus penggunaan khusus

  • Pernyataan pencarian

    Operator ini digunakan untuk mengapit kata kunci sintaksis. Jika kata kunci sintaksis diapit dalam tanda kutip ganda (""), kata kunci tersebut diperlakukan sebagai string literal, bukan operator. Dalam pencarian berbasis bidang, kata-kata yang diapit dalam tanda kutip ganda ("") dianggap sebagai satu kesatuan.

    • Jika nama bidang atau nilai bidang mengandung karakter khusus seperti spasi, karakter Cina, titik dua (:), dan tanda hubung (-) atau kata kunci sintaksis seperti and dan or, Anda harus mengapit nama bidang atau nilai bidang dalam tanda kutip ganda (""). Sebagai contoh, "and" mengembalikan log yang mengandung kata "and", memperlakukannya sebagai kata kunci, bukan operator.

    • SLS mendukung operator berikut: sort, asc, desc, group by, avg, sum, min, max, dan limit. Jika Anda ingin menggunakan operator ini sebagai kata kunci, Anda harus mengapit operator dalam tanda kutip ganda ("").

    • Jika log diproses menggunakan fitur transformasi data atau Plugin Logtail, kunci dalam bidang __tag__:__client_ip__ diubah menjadi kunci umum. Jika Anda ingin mencari log tersebut, Anda harus mengapit nama bidang __tag__:__client_ip__ dengan tanda kutip ganda ("") dalam pernyataan pencarian. Contoh: "__tag__:__client_ip__":192.0.2.1. Bidang __tag__:__client_ip__ adalah bidang khusus di SLS. Bidang ini menunjukkan alamat IP dari Host tempat log dikumpulkan. Untuk informasi selengkapnya, lihat Bidang khusus.

    Hasil kueri yang diharapkan

    Pernyataan pencarian

    Log di mana nilai bidang request method mengandung PUT. Nama bidang mengandung spasi.

    "request method":PUT

    Log di mana nilai bidang system error description mengandung DB. Nama bidang termasuk spasi.

    "system error description":DB*

    Log di mana nilai bidang region mengandung string cn*. Jika isi log adalah region:cn*,en dan pemisahnya adalah koma (,), maka akan dibagi menjadi region, cn*, dan en.

    region:"cn*"

    Log di mana nilai bidang remote_user kosong.

    remote_user:""

    Log di mana nilai bidang Authorization adalah Bearer 12345, yang mencakup spasi.

    "Authorization": "Bearer 12345"

    Log di mana nilai bidang errorContent mengandung The body is not valid json string, yang mencakup spasi.

    * | select * where errorContent like '%The body is not valid json string%'

    Log yang dikumpulkan dari host 192.0.2.1.

    "__tag__:__client_ip__":192.0.2.1
  • Pernyataan analitik

    • Jika nama properti seperti nama bidang atau nama tabel berisi karakter khusus seperti spasi, karakter Mandarin, titik dua (:), dan tanda hubung (-) atau kata kunci sintaksis seperti and dan or, Anda harus mengapit nama properti tersebut dengan tanda kutip ganda ("") dalam pernyataan analitik.

    • Jika karakter tertentu mewakili string, Anda harus menggunakan tanda kutip tunggal ('') untuk mengapit karakter tersebut dalam pernyataan analitik. Sebagai contoh, 'status' menunjukkan string status, dan status atau "status" menunjukkan bidang log status.

    Hasil kueri yang diharapkan

    Pernyataan kueri

    Log yang alamat IP-nya cocok dengan 192.168.XX.XX.

    * | select * from log where key like '192.168.%.%'

    10 durasi permintaan terpanjang.

    Nama kolom dengan spasi harus diapit dalam tanda kutip ganda ("").

    * | SELECT max(request_time,10) AS "top 10"

    Jumlah log yang sesuai dengan status permintaan berbeda.

    Bidang content diindeks sebagai tipe JSON. Untuk informasi lebih lanjut, lihat Bagaimana cara menanyakan dan menganalisis bidang JSON yang diindeks?

    * | SELECT "content.status", COUNT(*) AS PV GROUP BY "content.status"

tipe json

Log sampel

{
  "timestamp": "2025-03-21T14:35:18Z",
  "level": "ERROR",
  "service": {
    "name": "payment-processor",
    "version": "v2.8.1",
    "environment": "production"
  },
  "error": {
    "code": 5031,
    "message": "Failed to connect to third-party API",
    "details": {
      "endpoint": "https://api.paymentgateway.com/v3/verify",
      "attempts": 3,
      "last_response": {
        "status_code": 504,
        "headers": {
          "Content-Type": "application/json",
          "X-RateLimit-Limit": "100"
        }
      }
    }
  },
  "user": {
    "id": "usr-9a2b3c4d",
    "session": {
      "id": "sess-zxy987",
      "device": {
        "type": "mobile",
        "os": "Android 14",
        "network": "4G"
      }
    }
  },
  "trace": {
    "correlation_id": "corr-6f5e4d3c",
    "span_id": "span-00a1b2"
  }
}

Konfigurasi indeks

Sebelum Anda menjalankan pernyataan pencarian, pastikan bahwa indeks telah dikonfigurasi. Untuk informasi lebih lanjut, lihat Buat indeks. Untuk memeriksa konfigurasi indeks, ikuti langkah-langkah berikut:

  1. Di halaman query and analysis logstore, pilih Index Attributes > Attributes.image

  2. Di panel Pencarian & Analisis, periksa apakah indeks bidang telah dikonfigurasi.索引

Contoh

Untuk informasi lebih lanjut tentang contoh kueri dan analisis, lihat Kueri dan analisis log JSON dan FAQ tentang kueri dan analisis log JSON.

Hasil kueri yang diharapkan

Pernyataan kueri

Log yang mencatat permintaan gagal

level:error

Log yang mencatat permintaan dengan ID pengguna usr-9a2b3c4d

user.id:usr-9a2b3c4d

Log yang mencatat permintaan gagal dengan ID pengguna usr-9a2b3c4d dan kode status

user.id:usr-9a2b3c4d and error.details.last_response.status_code :504

Referensi