Indeks adalah struktur penyimpanan terbalik yang terdiri dari kata kunci dan pointer logis. Pointer logis dapat merujuk ke data aktual. Anda dapat menggunakan indeks untuk menemukan baris data dengan cepat berdasarkan kata kunci. Indeks mirip dengan katalog data. Anda hanya dapat menjalankan query dan menganalisis data log setelah mengonfigurasi indeks. Topik ini menjelaskan cara membuat, memodifikasi, menanyakan, dan menghapus indeks menggunakan Simple Log Service SDK untuk Java serta menyediakan contoh kode.
Prasyarat
Pengguna Resource Access Management (RAM) telah dibuat, dan izin yang diperlukan telah diberikan kepada pengguna RAM. Untuk informasi lebih lanjut, lihat Buat Pengguna RAM dan Berikan Izin kepada Pengguna RAM.
Variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET telah dikonfigurasi. Untuk informasi lebih lanjut, lihat Konfigurasikan Variabel Lingkungan di Linux, macOS, dan Windows.
PentingPasangan AccessKey akun Alibaba Cloud memiliki izin untuk semua Operasi API. Kami sarankan Anda menggunakan pasangan AccessKey dari pengguna RAM untuk memanggil Operasi API atau melakukan O&M rutin.
Kami sarankan Anda tidak menyimpan ID AccessKey atau Rahasia AccessKey dalam kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor, dan keamanan semua sumber daya dalam akun Anda mungkin terganggu.
Simple Log Service SDK untuk Java telah diinstal. Untuk informasi lebih lanjut, lihat Instal Simple Log Service SDK untuk Java.
Log telah ditulis ke Logstore. Untuk informasi lebih lanjut, lihat Ikhtisar Pengumpulan Data.
Catatan penggunaan
Dalam contoh ini, Titik akhir publik Layanan Log Sederhana untuk wilayah China (Hangzhou) digunakan, yaitu https://cn-hangzhou.log.aliyuncs.com. Jika Anda ingin mengakses Layanan Log Sederhana dengan menggunakan layanan Alibaba Cloud lainnya yang berada di wilayah yang sama dengan Proyek Anda, Anda dapat menggunakan Titik akhir internal Layanan Log Sederhana, yaitu https://cn-hangzhou-intranet.log.aliyuncs.com. Untuk informasi lebih lanjut tentang wilayah dan Titik akhir yang didukung oleh Layanan Log Sederhana, lihat Titik Akhir.
Log mentah
body_bytes_sent:1750
host:www.example.com
http_referer:www.example.com
http_user_agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; it-it) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27
http_x_forwarded_for:203.0.XX.XX
remote_addr:203.0.XX.XX
remote_user:p288
request_length:13741
request_method:GET
request_time:71
request_uri:/request/path-1/file-1
http_code:200
time_local:11/Aug/2021:06:52:27
upstream_response_time:0.66Contoh kode yang digunakan untuk membuat indeks
Anda dapat mengelola indeks di konsol Layanan Log Sederhana dengan mudah. Untuk informasi lebih lanjut, lihat Buat Indeks.
Contoh kode berikut menunjukkan cara membuat indeks bernama testindex. Dalam contoh ini, pengindeksan teks penuh diaktifkan, dan pengindeksan bidang diaktifkan untuk bidang request_method dan status. Contoh ini didasarkan pada log mentah.

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.Index;
import com.aliyun.openservices.log.exception.LogException;
public class CreateIndex {
public static void main(String[] args) throws LogException {
// Dalam contoh ini, ID AccessKey dan Rahasia AccessKey diperoleh dari variabel lingkungan.
String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
// Nama proyek.
String projectName = "ali-test-project";
// Nama Logstore.
String logstoreName = "ali-test-logstore";
// Titik akhir Layanan Log Sederhana. Dalam contoh ini, Titik akhir Layanan Log Sederhana untuk wilayah China (Hangzhou) digunakan. Ganti nilai parameter dengan Titik akhir sebenarnya.
String host = "https://cn-hangzhou.log.aliyuncs.com";
// Buat klien Layanan Log Sederhana.
Client client = new Client(host, accessId, accessKey);
try {
// Konfigurasi indeks.
// Sebelum Anda membuat indeks, Anda harus merencanakan konfigurasi pengindeksan teks penuh dan pengindeksan bidang. Dalam contoh ini, pengindeksan teks penuh diaktifkan, dan pengindeksan bidang diaktifkan untuk bidang request_method dan status.
String logstoreindex = "{\"line\": {\"token\": [\",\", \" \", \"'\", \"\\\"\", \";\", \"=\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"?\", \"@\", \"&\", \"<\", \">\", \"/\", \":\", \"\\n\", \"\\t\", \"\\r\"], \"caseSensitive\": false, \"chn\": false}, \"keys\": {\"request_method\": {\"type\": \"text\", \"token\": [\",\", \" \", \"'\", \"\\\"\", \";\", \"=\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"?\", \"@\", \"&\", \"<\", \">\", \"/\", \":\", \"\\n\", \"\\t\", \"\\r\"], \"caseSensitive\": false, \"alias\": \"\", \"doc_value\": true, \"chn\": false}, \"status\": {\"type\": \"long\", \"alias\": \"\", \"doc_value\": true}}, \"log_reduce\": false, \"max_text_len\": 2048}";
Index index = new Index();
System.out.println("siap untuk membuat indeks");
index.FromJsonString(logstoreindex);
client.CreateIndex(projectName, logstoreName, index);
System.out.println(String.format("buat indeks untuk %s berhasil", logstoreName));
} catch (LogException e) {
System.out.println("LogException e :" + e.toString());
System.out.println("kode kesalahan :" + e.GetErrorCode());
System.out.println("pesan kesalahan :" + e.GetErrorMessage());
throw e;
}
}
}Hasil yang Diharapkan:
siap untuk membuat indeks
buat indeks untuk ali-test-logstore berhasilContoh kode yang digunakan untuk memodifikasi indeks
Anda dapat mengelola indeks di konsol Layanan Log Sederhana dengan mudah. Untuk informasi lebih lanjut, lihat Buat Indeks.
Contoh kode berikut menunjukkan cara memodifikasi indeks. Dalam contoh ini, pengindeksan teks penuh diaktifkan, pengindeksan bidang diaktifkan untuk bidang request_method dan status, dan caseSensitive disetel ke True untuk bidang request_method. Contoh ini didasarkan pada log mentah.

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.Index;
import com.aliyun.openservices.log.exception.LogException;
public class UpdateIndex {
public static void main(String[] args) throws LogException {
// Dalam contoh ini, ID AccessKey dan Rahasia AccessKey diperoleh dari variabel lingkungan.
String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
// Nama proyek.
String projectName = "ali-test-project";
// Nama Logstore.
String logstoreName = "ali-test-logstore";
// Titik akhir Layanan Log Sederhana. Dalam contoh ini, Titik akhir Layanan Log Sederhana untuk wilayah China (Hangzhou) digunakan. Ganti nilai parameter dengan Titik akhir sebenarnya.
String host = "https://cn-hangzhou.log.aliyuncs.com";
// Buat klien Layanan Log Sederhana.
Client client = new Client(host, accessId, accessKey);
try {
// Modifikasi indeks.
String logstoreindex = "{\"line\": {\"token\": [\",\", \" \", \"'\", \"\\\"\", \";\", \"=\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"?\", \"@\", \"&\", \"<\", \">\", \"/\", \":\", \"\\n\", \"\\t\", \"\\r\"], \"caseSensitive\": false, \"chn\": false}, \"keys\": {\"request_method\": {\"type\": \"text\", \"token\": [\",\", \" \", \"'\", \"\\\"\", \";\", \"=\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"?\", \"@\", \"&\", \"<\", \">\", \"/\", \":\", \"\\n\", \"\\t\", \"\\r\"], \"caseSensitive\": true, \"alias\": \"\", \"doc_value\": true, \"chn\": false}, \"status\": {\"type\": \"long\", \"alias\": \"\", \"doc_value\": true}}, \"log_reduce\": false, \"max_text_len\": 2048}";
Index index = new Index();
System.out.println("siap untuk memperbarui indeks");
index.FromJsonString(logstoreindex);
client.UpdateIndex(projectName, logstoreName, index);
System.out.println(String.format("perbarui indeks untuk %s berhasil", logstoreName));
} catch (LogException e) {
System.out.println("LogException e :" + e.toString());
System.out.println("kode kesalahan :" + e.GetErrorCode());
System.out.println("pesan kesalahan :" + e.GetErrorMessage());
throw e;
}
}
}Hasil yang Diharapkan:
siap untuk memperbarui indeks
perbarui indeks untuk ali-test-logstore berhasilContoh kode yang digunakan untuk menanyakan indeks
Contoh kode berikut menunjukkan cara menanyakan indeks Logstore tertentu:
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.Index;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.response.GetIndexResponse;
public class ListIndex {
public static void main(String[] args) throws LogException {
// Dalam contoh ini, ID AccessKey dan Rahasia AccessKey diperoleh dari variabel lingkungan.
String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
// Nama proyek.
String projectName = "ali-test-project";
// Nama Logstore.
String logstoreName = "ali-test-logstore";
// Titik akhir Layanan Log Sederhana. Dalam contoh ini, Titik akhir Layanan Log Sederhana untuk wilayah China (Hangzhou) digunakan. Ganti nilai parameter dengan Titik akhir sebenarnya.
String host = "https://cn-hangzhou.log.aliyuncs.com";
// Buat klien Layanan Log Sederhana.
Client client = new Client(host, accessId, accessKey);
try {
Index index = new Index();
System.out.println("siap untuk mendapatkan indeks");
GetIndexResponse response = client.GetIndex(projectName, logstoreName);
index = response.GetIndex();
// Tampilkan informasi tentang indeks.
System.out.println("Indeksnya adalah :" + index.ToJsonString());
System.out.println(String.format("dapatkan indeks untuk %s berhasil", logstoreName));
} catch (LogException e) {
System.out.println("LogException e :" + e.toString());
System.out.println("kode kesalahan :" + e.GetErrorCode());
System.out.println("pesan kesalahan :" + e.GetErrorMessage());
throw e;
}
}
}Hasil yang Diharapkan:
siap untuk mendapatkan indeks
Indeksnya adalah :{"log_reduce":false,"line":{"caseSensitive":false,"chn":false,"token":[","," ","'","\"",";","=","(",")","[","]","{","}","?","@","&","<",">","/",":","\n","\t","\r"]},"keys":{"request_method":{"doc_value":true,"caseSensitive":true,"chn":false,"alias":"","type":"text","token":[","," ","'","\"",";","=","(",")","[","]","{","}","?","@","&","<",">","/",":","\n","\t","\r"]},"status":{"doc_value":true,"alias":"","type":"long"}},"ttl":30,"max_text_len":2048}
dapatkan indeks untuk ali-test-logstore berhasilContoh kode yang digunakan untuk menghapus indeks
Contoh kode berikut menunjukkan cara menghapus indeks Logstore tertentu:
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.exception.LogException;
public class DeleteIndex {
public static void main(String[] args) throws LogException {
// Dalam contoh ini, ID AccessKey dan Rahasia AccessKey diperoleh dari variabel lingkungan.
String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
// Nama proyek.
String projectName = "ali-test-project";
// Nama Logstore.
String logstoreName = "ali-test-logstore";
// Titik akhir Layanan Log Sederhana. Dalam contoh ini, Titik akhir Layanan Log Sederhana untuk wilayah China (Hangzhou) digunakan. Ganti nilai parameter dengan Titik akhir sebenarnya.
String host = "https://cn-hangzhou.log.aliyuncs.com";
// Buat klien Layanan Log Sederhana.
Client client = new Client(host, accessId, accessKey);
try {
System.out.println("siap untuk menghapus indeks");
client.DeleteIndex(projectName, logstoreName);
System.out.println(String.format("hapus indeks untuk %s berhasil", logstoreName));
} catch (LogException e) {
System.out.println("LogException e :" + e.toString());
System.out.println("kode kesalahan :" + e.GetErrorCode());
System.out.println("pesan kesalahan :" + e.GetErrorMessage());
throw e;
}
}
}Hasil yang Diharapkan:
siap untuk menghapus indeks
hapus indeks untuk ali-test-logstore berhasilReferensi
Jika respons yang dikembalikan oleh Layanan Log Sederhana berisi informasi kesalahan setelah Anda memanggil operasi API, pemanggilan gagal. Anda dapat menangani kesalahan berdasarkan kode kesalahan yang dikembalikan saat pemanggilan API gagal. Untuk informasi lebih lanjut, lihat Kode Kesalahan.
Layanan Log Sederhana juga kompatibel dengan SDK Alibaba Cloud. Untuk informasi lebih lanjut, lihat Simple Log Service_SDK Center_Alibaba Cloud OpenAPI Explorer.
Layanan Log Sederhana menyediakan antarmuka baris perintah (CLI) untuk memenuhi persyaratan konfigurasi otomatis di Layanan Log Sederhana. Untuk informasi lebih lanjut, lihat Ikhtisar CLI Layanan Log Sederhana.
Untuk informasi lebih lanjut tentang operasi API terkait indeks, lihat topik berikut:
Untuk lebih banyak contoh kode, lihat Alibaba Cloud Simple Log Service SDK for Java di GitHub.