すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:Simple Log Service の Python SDK を使用したインデックスの管理

最終更新日:Sep 12, 2026

インデックスは、キーワードを実際のデータを参照する論理ポインターにマッピングする転置ストレージ構造であり、キーワードによる高速な検索を可能にします。ログデータをクエリおよび分析するには、事前にインデックスを設定する必要があります。このトピックでは、Simple Log Service (SLS) の Python SDK を使用してインデックスを作成、変更、クエリ、削除するためのサンプルコードを提供します。

前提条件

  • Simple Log Service の Python SDK が初期化されていること。

注意事項

この例では、中国 (杭州) リージョンのパブリックな SLS エンドポイントが使用されます。エンドポイント: https://cn-hangzhou.log.aliyuncs.com。

プロジェクトと同じリージョンにある他の Alibaba Cloud サービスから SLS にアクセスする場合は、内部 SLS エンドポイント https://cn-hangzhou-intranet.log.aliyuncs.com を使用できます。

SLS がサポートするリージョンとエンドポイントの詳細については、エンドポイントをご参照ください。

課金

取り込みデータ量課金モードの Logstore

機能別課金モードの Logstore

生ログ

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

インデックス作成のサンプルコード

SLS コンソールでもインデックスを管理できます。詳細については、インデックスの作成をご参照ください。

以下のサンプルコードは、フルテキストインデックス作成を有効にし、request_method および status フィールドのフィールドインデックス作成を有効にしてインデックスを作成します。この例は、上記の生ログに基づいています。

from aliyun.log import LogClient, IndexConfig
import os
# この例では、環境変数から AccessKey ID と AccessKey Secret を取得します。
accessKeyId = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '')
accessKey = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '')
# Simple Log Service のサービスエンドポイント。この例では、中国 (杭州) リージョンのエンドポイントを使用します。実際のエンドポイントに置き換えてください。
endpoint = "cn-hangzhou.log.aliyuncs.com"
# Simple Log Service クライアントを作成します。
client = LogClient(endpoint, accessKeyId, accessKey)
# プロジェクト名。
project_name = "ali-test-project"
# Logstore 名。
logstore_name = "ali-test-logstore"
if __name__ == '__main__':
    # インデックスを作成する前に、フルテキストインデックス作成とフィールドインデックス作成の構成を計画する必要があります。この例では、フルテキストインデックス作成を有効にし、request_method および 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("ready to create index")
    index_config = IndexConfig()
    index_config.from_json(logstore_index)
    client.create_index(project_name, logstore_name, index_config)
    print("create index success ")

期待される結果:

ready to create index
create index success

インデックス変更のサンプルコード

SLS コンソールでもインデックスを管理できます。詳細については、インデックスの作成をご参照ください。

以下のサンプルコードは、request_method フィールドの caseSensitive を True に設定してインデックスを変更します。request_method と status のフルテキストインデックス作成とフィールドインデックス作成は有効のままです。この例は、上記の生ログに基づいています。

from aliyun.log import LogClient, IndexConfig
import os
# この例では、環境変数から AccessKey ID と AccessKey Secret を取得します。
accessKeyId = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '')
accessKey = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '')
# Simple Log Service のサービスエンドポイント。この例では、中国 (杭州) リージョンのエンドポイントを使用します。実際のエンドポイントに置き換えてください。
endpoint = "cn-hangzhou.log.aliyuncs.com"
# Simple Log Service クライアントを作成します。
client = LogClient(endpoint, accessKeyId, accessKey)
# プロジェクト名。
project_name = "ali-test-project"
# Logstore 名。
logstore_name = "ali-test-logstore"
if __name__ == '__main__':
    # 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("ready to update index")
    index_config = IndexConfig()
    index_config.from_json(logstore_index)
    client.update_index(project_name, logstore_name, index_config)
    print("update index success ")

期待される結果:

ready to update index
update index success

インデックスクエリのサンプルコード

以下のコードは、指定された Logstore のインデックス構成を取得します。

from aliyun.log import LogClient, IndexConfig
import os
# この例では、環境変数から AccessKey ID と AccessKey Secret を取得します。
accessKeyId = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '')
accessKey = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '')
# Simple Log Service のサービスエンドポイント。この例では、中国 (杭州) リージョンのエンドポイントを使用します。実際のエンドポイントに置き換えてください。
endpoint = "cn-hangzhou.log.aliyuncs.com"
# Simple Log Service クライアントを作成します。
client = LogClient(endpoint, accessKeyId, accessKey)
# プロジェクト名。
project_name = "ali-test-project"
# Logstore 名。
logstore_name = "ali-test-logstore"
if __name__ == '__main__':
    # インデックス構成を取得します。
    print("ready to list index")
    res = client.get_index_config(project_name, logstore_name)
    print("The index config is :%s" % res.get_index_config().to_json())
    print("list index success ")

期待される結果:

ready to list index
The index config is :{'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}
list index success

インデックス削除のサンプルコード

以下のコードは、指定された Logstore のインデックスを削除します。

from aliyun.log import LogClient, IndexConfig
import os
# この例では、環境変数から AccessKey ID と AccessKey Secret を取得します。
accessKeyId = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '')
accessKey = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '')
# Simple Log Service のサービスエンドポイント。この例では、中国 (杭州) リージョンのエンドポイントを使用します。実際のエンドポイントに置き換えてください。
endpoint = "cn-hangzhou.log.aliyuncs.com"
# Simple Log Service クライアントを作成します。
client = LogClient(endpoint, accessKeyId, accessKey)
# プロジェクト名。
project_name = "ali-test-project"
# Logstore 名。
logstore_name = "ali-test-logstore2"
if __name__ == '__main__':
    # インデックスを削除します。
    print("ready to delete index")
    client.delete_index(project_name, logstore_name)
    print("delete index success ")

期待される結果:

ready to delete index
delete index success

参考