Saat membuat indeks, Anda dapat mengatur tipe data suatu bidang menjadi text, long, double, atau JSON. Topik ini menjelaskan tipe data bidang dan menyediakan contoh konfigurasinya.
Ikhtisar tipe data
Kami menyarankan agar Anda menggunakan konsol untuk membuat indeks. Simple Log Service (SLS) secara otomatis menghasilkan indeks bidang berdasarkan entri pertama dalam data pratinjau selama pengumpulan, dan Anda juga dapat membuat indeks bidang kustom.
-
Tipe text, long, dan double:
-
Jika ingin melakukan kueri dan analisis terhadap bidang bertipe string, Anda harus mengatur tipe data bidang tersebut ke text saat membuat indeks dan mengaktifkan Enable Analytics untuk bidang tersebut.
CatatanBidang bertipe text, long, dan double masing-masing dapat mengaktifkan analitik secara independen. Suatu bidang hanya dapat digunakan untuk penyaringan klausa WHERE, analisis agregat (SELECT/GROUP BY), dan visualisasi dalam kueri SQL setelah Anda mengaktifkan Enable Analytics untuk bidang tersebut. Jika analitik tidak diaktifkan, bidang tersebut mungkin tidak dapat diekstrak atau mengembalikan nilai null dalam analisis kueri SQL.
Pada antarmuka konfigurasi Atribut Indeks Key/Value di konsol, setiap baris bidang memiliki sakelar Enable Analytics. Sakelar ini tersedia secara independen untuk tipe bidang text, long, dan double, dan tidak hilang meskipun tipe bidang berubah.
PentingPanjang maksimum nilai bidang default di Simple Log Service adalah 2 KB (2.048 byte). Konten yang melebihi batas ini akan dipotong dan tidak diindeks atau dianalisis. Hal ini tidak memengaruhi pengumpulan atau pelaporan Log Mentah.
Untuk menganalisis bidang yang lebih panjang secara lengkap, Anda dapat meningkatkan panjang maksimum bidang teks yang dianalisis hingga 16 KB. Dampak peningkatan batas ini terhadap kinerja analisis SQL belum didokumentasikan. Evaluasi dampaknya berdasarkan skenario bisnis Anda.
-
Lakukan kueri nilai bidang menggunakan rentang numerik hanya jika Anda mengatur tipe data bidang tersebut ke long atau double. Jika tipe data bidang diatur ke long atau double, Anda tidak dapat melakukan kueri terhadap bidang tersebut menggunakan tanda bintang (*) atau tanda tanya (?), karena karakter wildcard tersebut digunakan untuk pencocokan kabur.
-
Jika nilai bidang berupa bilangan bulat, atur tipe data bidang tersebut ke long.
-
Jika nilai bidang berupa bilangan titik mengambang, atur tipe data bidang tersebut ke double. Jika tidak, Anda tidak dapat melakukan kueri terhadap bidang tersebut.
-
Jika Anda mengatur tipe data bidang ke long atau double tetapi nilainya berupa string, Anda tidak dapat melakukan kueri terhadap bidang tersebut.
PentingJika nilai bidang merupakan nilai numerik yang tidak valid, lakukan kueri terhadap bidang tersebut menggunakan pernyataan pencarian not key > -1000000. Pernyataan ini mengembalikan log yang nilainya merupakan nilai numerik tidak valid. Ganti -1000000 dengan nilai numerik valid yang kurang dari atau sama dengan nilai numerik valid terkecil dari bidang tersebut dalam log Anda.
-
-
-
Tipe JSON: Jika nilai bidang bertipe JSON, atur tipe data bidang tersebut ke JSON saat membuat indeks.
-
Atur tipe data bidang dalam objek JSON ke long, double, atau text berdasarkan nilai bidang tersebut dan aktifkan Enable Analytics untuk bidang tersebut. Setelah Anda mengaktifkan Enable Analytics, SLS memungkinkan Anda melakukan kueri dan analisis terhadap bidang tersebut.
Jika Anda memilih Automatically Index All Text Fields in JSON Field, indeks akan dibuat secara otomatis untuk semua bidang bertipe text dalam objek JSON. Setelah indeks dibuat, trafik indeks akan dihasilkan.

-
Untuk data berformat JSON yang hanya sebagian valid, SLS hanya dapat mengurai bagian data yang valid.
Contoh berikut menunjukkan log JSON yang tidak lengkap. SLS dapat mengurai bidang content.remote_addr, content.request.request_length, dan content.request.request_method.
content: { remote_addr:"192.0.2.0" request: { request_length:"73" request_method:"GEPenting-
Anda dapat membuat indeks untuk node daun dalam objek JSON. Anda tidak dapat membuat indeks untuk node anak yang berisi node daun.
-
Anda tidak dapat membuat indeks untuk bidang yang nilainya berupa array JSON atau bidang dalam array JSON.
-
Jika nilai bidang bertipe Boolean, Anda dapat mengatur tipe data bidang tersebut ke text saat membuat indeks.
-
Pernyataan kueri memiliki format
Pernyataan pencarian|Pernyataan analitik. Dalam pernyataan analitik, Anda harus membungkus nama bidang dengan tanda kutip ganda ("") dan string dengan tanda kutip tunggal ('').
-
-
Referensi
-
Untuk informasi lebih lanjut tentang skenario dan FAQ terkait kueri dan analisis log JSON, lihat FAQ tentang kueri dan analisis log JSON. FAQ ini mencakup informasi tentang cara membuat indeks, melakukan kueri dan analisis bidang JSON terindeks, menggunakan fungsi JSON, serta menganalisis array JSON.
-
Untuk informasi lebih lanjut tentang konfigurasi dan prosedur terkait kueri dan analisis log JSON, lihat Kueri dan analisis log JSON.
-
Jika volume data log JSON yang ingin Anda kueri dan analisis kecil, Anda tidak perlu membuat indeks untuk node daun JSON. Gunakan fungsi JSON untuk melakukan kueri dan analisis terhadap log tersebut. Dalam kasus penggunaan tertentu, Anda dapat hanya menggunakan fungsi JSON untuk kueri dan analisis. Untuk informasi lebih lanjut tentang penggunaan fungsi JSON, lihat Kapan menggunakan fungsi JSON. Untuk informasi lebih lanjut tentang deskripsi dan contoh fungsi JSON, lihat Fungsi JSON.
-
-
Berbeda dengan bidang biasa, rentang tanggal dan waktu tidak dapat dikonfigurasi sebagai bidang terindeks. Untuk melakukan kueri log, tentukan secara manual rentang waktu menggunakan Time Range di konsol.
Prosedur
-
Buat indeks di konsol SLS. Untuk informasi lebih lanjut, lihat Buat indeks.
-
Pilih tipe data untuk bidang saat membuat indeks.
tipe text, long, dan double
-
Contoh log

-
Konfigurasi indeks

-
Contoh pernyataan kueri
-
Untuk melakukan kueri terhadap log yang durasi permintaannya lebih dari 60 detik, jalankan pernyataan berikut:
request_time > 60 -
Untuk melakukan kueri terhadap log yang durasi permintaannya lebih dari atau sama dengan 60 detik tetapi kurang dari 200 detik, jalankan salah satu pernyataan berikut:
request_time in [60 200)danrequest_time >= 60 and request_time < 200. -
Untuk melakukan kueri terhadap log yang kode status permintaannya 200, jalankan pernyataan berikut:
status = 200. -
Untuk melakukan kueri terhadap log yang tidak mencatat permintaan GET, jalankan pernyataan berikut:
not request_method : GET. -
Untuk melakukan kueri terhadap log yang berisi kata-kata tertentu dan kata-kata tersebut diawali dengan cn, jalankan pernyataan berikut:
cn*. -
Untuk mengumpulkan statistik distribusi client, jalankan pernyataan berikut:
* | SELECT ip_to_province(client_ip) as province, count(*) AS pv GROUP BY province ORDER BY pv.
-
Tipe JSON
-
Contoh log
Gambar berikut memberikan contoh log JSON. Log tersebut berisi bidang class, latency, status, dan info serta bidang terpesan SLS. Nilai bidang info merupakan objek JSON yang memiliki beberapa lapisan.

-
Konfigurasi indeks

Daftar berikut memberikan detail lebih lanjut:
-
Nilai bidang IP dan data berupa array JSON. Oleh karena itu, Anda tidak dapat membuat indeks untuk bidang IP atau data dan tidak dapat melakukan kueri atau analisis data menggunakan bidang tersebut.
-
Bidang region dan CreateTime berada dalam array JSON. Oleh karena itu, Anda tidak dapat membuat indeks untuk bidang region atau CreateTime dan tidak dapat melakukan kueri atau analisis data menggunakan bidang tersebut.
-
-
Contoh pernyataan kueri
-
Untuk melakukan kueri terhadap log yang nilai bidang usedTime-nya lebih dari 60 detik, jalankan pernyataan berikut:
info.usedTime > 60. -
Untuk melakukan kueri terhadap log yang nilai bidang success-nya true, jalankan pernyataan berikut:
info.success : true. -
Untuk melakukan kueri terhadap log yang nilai bidang usedTime-nya lebih dari 60 detik dan nilai bidang projectName-nya bukan project01, jalankan pernyataan berikut:
info.usedTime > 60 not info.param.projectName : project01. -
Untuk menghitung durasi rata-rata yang diperlukan untuk mendapatkan informasi proyek, jalankan pernyataan berikut:
methodName = getProjectInfo | SELECT avg("info.usedTime") AS avg_time.
-
-
Saat mengonfigurasi indeks, perhatikan aturan berikut:
-
Anda harus mengaktifkan setidaknya salah satu atribut FullText Index atau Key/Value Index.
-
Konfigurasi indeks tingkat bidang menggantikan pengaturan bidang dengan nama yang sama dalam FullText Index. Misalnya, jika suatu bidang dikonfigurasi untuk pencarian tokenized full-text dalam FullText Index, tetapi Anda secara terpisah mengonfigurasi tipe dan properti untuk bidang tersebut dalam Key/Value Index, maka konfigurasi Key/Value Index yang berlaku.
-
Saat tipe bidang adalah long atau double, properti Case Sensitive dan Token tidak berlaku.
-
Anda hanya dapat mengurangi waktu retensi indeks.
-
Perubahan konfigurasi indeks (termasuk penambahan bidang, modifikasi tipe, dan pengaktifan sakelar statistik/kueri) berlaku setelah sekitar 1 menit, tetapi hanya berlaku untuk data baru yang ditulis setelah indeks berlaku. Untuk melakukan kueri terhadap data historis, Anda harus melakukan pengindeksan ulang terhadap data tersebut. Untuk informasi lebih lanjut, lihat Pengindeksan ulang data.
-
Pengindeksan ulang hanya mendukung data dari 30 hari terakhir dan berumur minimal 15 menit.