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 SDK Layanan Log Sederhana untuk Python 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 pengguna RAM untuk memanggil operasi API atau melakukan pemeliharaan rutin O&M.
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.
SDK Layanan Log Sederhana untuk Python telah diinstal. Untuk informasi lebih lanjut, lihat Instal SDK Layanan Log Sederhana untuk Python.
Log telah ditulis ke Logstore. Untuk informasi lebih lanjut, lihat Gambaran 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. Dalam contoh ini, pengindeksan teks penuh diaktifkan, dan pengindeksan bidang diaktifkan untuk bidang request_method dan status. Contoh ini didasarkan pada log mentah.

from aliyun.log import LogClient, IndexConfig
import os
# Konfigurasikan variabel lingkungan. Dalam contoh ini, ID AccessKey dan rahasia AccessKey diperoleh dari variabel lingkungan.
accessKeyId = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '')
accessKey = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '')
# 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.
endpoint = "cn-hangzhou.log.aliyuncs.com"
# Buat klien Layanan Log Sederhana.
client = LogClient(endpoint, accessKeyId, accessKey)
# Nama proyek.
project_name = "ali-test-project"
# Nama Logstore.
logstore_name = "ali-test-logstore"
if __name__ == '__main__':
# 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.
logstore_index = {'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}
print("siap membuat indeks")
index_config = IndexConfig()
index_config.from_json(logstore_index)
client.create_index(project_name, logstore_name, index_config)
print("membuat indeks berhasil")Hasil yang Diharapkan:
siap membuat indeks
membuat indeks 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.

from aliyun.log import LogClient, IndexConfig
import os
# Konfigurasikan variabel lingkungan. Dalam contoh ini, ID AccessKey dan rahasia AccessKey diperoleh dari variabel lingkungan.
accessKeyId = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '')
accessKey = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '')
# 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.
endpoint = "cn-hangzhou.log.aliyuncs.com"
# Buat klien Layanan Log Sederhana.
client = LogClient(endpoint, accessKeyId, accessKey)
# Nama proyek.
project_name = "ali-test-project"
# Nama Logstore.
logstore_name = "ali-test-logstore"
if __name__ == '__main__':
# Setel caseSensitive ke True untuk bidang request_method.
logstore_index = {'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}
print("siap memperbarui indeks")
index_config = IndexConfig()
index_config.from_json(logstore_index)
client.update_index(project_name, logstore_name, index_config)
print("memperbarui indeks berhasil")Hasil yang Diharapkan:
siap memperbarui indeks
memperbarui indeks berhasilContoh kode yang digunakan untuk menanyakan indeks
Contoh kode berikut menunjukkan cara menanyakan indeks Logstore tertentu:
from aliyun.log import LogClient, IndexConfig
import os
# Konfigurasikan variabel lingkungan. Dalam contoh ini, ID AccessKey dan rahasia AccessKey diperoleh dari variabel lingkungan.
accessKeyId = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '')
accessKey = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '')
# 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.
endpoint = "cn-hangzhou.log.aliyuncs.com"
# Buat klien Layanan Log Sederhana.
client = LogClient(endpoint, accessKeyId, accessKey)
# Nama proyek.
project_name = "ali-test-project"
# Nama Logstore.
logstore_name = "ali-test-logstore"
if __name__ == '__main__':
# Menanyakan indeks.
print("siap mencantumkan indeks")
res = client.get_index_config(project_name, logstore_name)
print("Konfigurasi indeks adalah :%s" % res.get_index_config().to_json())
print("menanyakan indeks berhasil")Hasil yang Diharapkan:
siap mencantumkan indeks
Konfigurasi indeks adalah :{'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}
menanyakan indeks berhasilContoh kode yang digunakan untuk menghapus indeks
Contoh kode berikut menunjukkan cara menghapus indeks Logstore tertentu:
from aliyun.log import LogClient, IndexConfig
import os
# Konfigurasikan variabel lingkungan. Dalam contoh ini, ID AccessKey dan rahasia AccessKey diperoleh dari variabel lingkungan.
accessKeyId = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '')
accessKey = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '')
# 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.
endpoint = "cn-hangzhou.log.aliyuncs.com"
# Buat klien Layanan Log Sederhana.
client = LogClient(endpoint, accessKeyId, accessKey)
# Nama proyek.
project_name = "ali-test-project"
# Nama Logstore.
logstore_name = "ali-test-logstore2"
if __name__ == '__main__':
# Hapus indeks.
print("siap menghapus indeks")
client.delete_index(project_name, logstore_name)
print("menghapus indeks berhasil")Hasil yang Diharapkan:
siap menghapus indeks
menghapus indeks berhasilReferensi
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 dalam Layanan Log Sederhana. Untuk informasi lebih lanjut, lihat Gambaran CLI Layanan Log Sederhana.
Untuk informasi lebih lanjut tentang operasi API terkait indeks, lihat topik-topik berikut:
Untuk informasi lebih lanjut tentang contoh kode, lihat Alibaba Cloud Simple Log Service SDK for Python di GitHub.