全部产品
Search
文档中心

Simple Log Service:Gunakan SDK Layanan Log Sederhana untuk Python untuk mengelola indeks

更新时间:Jul 06, 2025

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.

    Penting
    • Pasangan 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.66

Contoh 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 berhasil

Contoh 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 berhasil

Contoh 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 berhasil

Contoh 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 berhasil

Referensi