全部產品
Search
文件中心

Simple Log Service:建立索引

更新時間:Feb 14, 2025

調用CreateIndex為指定Logstore建立索引。

前提條件

您已完成以下操作:

參數說明

def create_index(self, project_name, logstore_name, index_detail):

請求參數

名稱

類型

是否必填

說明

project_name

String

Project名稱:專案(Project)是Log Service的資源嵌入式管理單元,是進行多使用者隔離與存取控制的主要邊界。更多資訊,請參見管理Project

logstore_name

String

Logstore名稱:Logstore是Log Service中日誌資料的採集、儲存和查詢單元。更多資訊,請參見管理Logstore

index_detail

IndexConfig

索引配置資訊。

IndexConfig參數說明:

名稱

類型

是否必填

說明

line_config

IndexLineConfig

IndexLineConfig類,用於配置全文索引。

key_config_list

Dict[str, IndexLineConfig]

IndexKeyConfig類,用於配置欄位索引,類型是一個字典。字典的鍵為欄位名稱,類型為字串。值為該欄位的索引配置,類型為IndexLineConfig。

log_reduce

bool

是否開啟日誌聚類。開啟後白名單與黑名單只生效其中一個。

  • True:開啟日誌聚類。

  • False(預設值):不開啟日誌聚類。

IndexLineConfig參數說明:

名稱

類型

是否必填

說明

token_list

List

分詞符列表。按照給出的分詞符列表進行詞語的劃分。例如指定分詞符列表包含, : 時,日誌內容hello:aliyun,sls將被拆分成三個詞語helloaliyunsls,查詢時可搜尋字詞關鍵詞。

case_sensitive

bool

是否大小寫敏感。

  • True:大小寫敏感。

  • False(預設值):大小寫不敏感。

chinese

bool

是否啟用中文分詞功能。開啟中文分詞後,shard的讀寫能力會有一定下降。

  • True:啟用

  • False(預設值):不啟用

IndexKeyConfig參數說明:

名稱

類型

是否必填

說明

index_type

String

索引類型。預設為text。可選textlongdoublejson

  • text:文字欄位。可配置 token_listcase_sensitivechinesedoc_valuealias參數。

  • long:整型欄位。可配置doc_valuealias參數。

  • double:浮點數欄位。可配置doc_valuealias參數。

  • json:JSON文字欄位。僅可配置json_key_config參數。

token_list

List

分詞符列表。按照給出的分詞符列表進行詞語的劃分。例如指定分詞符列表包含, : 時,日誌內容hello:aliyun,sls將被拆分成三個詞語helloaliyunsls,查詢時可搜尋字詞關鍵詞。

case_sensitive

bool

是否大小寫敏感。

  • True:大小寫敏感。

  • False(預設值):大小寫不敏感。

doc_value

bool

是否開啟統計分析功能,開啟後該欄位可用於分析語句。

alias

String

索引鍵的別名。

json_key_config

IndexJsonKeyConfig

IndexJsonKeyConfig類,當index_typejson時,需要配置此項。

chinese

bool

是否啟用中文分詞功能。開啟中文分詞後,shard的讀寫能力會有一定下降。

  • True:啟用

  • False(預設值):不啟用

IndexJsonKeyConfig參數說明:

名稱

類型

是否必填

說明

index_all

bool

如果JSON鍵中的所有字串值都應該被索引,則設定為True。

max_depth

int

index_all為True時,只有當JSON值的depth <= max_depth才會被索引。預設值為 -1-1表示無深度限制。

alias

String

索引鍵的別名。

json_keys

Dict[str, JsonKeyConfigValue]

JSON欄位內嵌套的子欄位索引配置。可通過調用IndexJsonKeyConfig執行個體的add_key方法添加子欄位。例如日誌欄位為:

jsonKey:{
    "level_1_key_1": 123,
    "level_1_key_2": {
        "level_2_key_1": "hello"
    }
}

可以配置欄位jsonKeyindex_typejsonjson_key_config參數上調用add_key("level_1_key_1", "long")add_key("level_1_key_2.level_2_key_1", "text")來為嵌套子欄位添加欄位索引。

返回參數

返回參數請參見:CreateIndex - 建立索引

範例程式碼

from aliyun.log import LogClient, IndexConfig, IndexKeyConfig, IndexLineConfig, IndexJsonKeyConfig
import os

# 本樣本從環境變數中擷取AccessKey ID和AccessKey Secret
access_key_id = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '')
access_key_secret = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '')
# Log Service的服務存取點
endpoint = "cn-hangzhou.log.aliyuncs.com"

# 執行個體化LogClient類
client = LogClient(endpoint, access_key_id, access_key_secret)

project_name = "project-1"
logstore_name = "logstore-1"


def main():
    ttl = 1
    token_list = [",", "\t", "\n", ";"]

    # 全文索引配置
    line_config = IndexLineConfig(token_list, case_sensitive=False, include_keys=None, exclude_keys=None, chinese=None)
    # 欄位索引配置
    index_config = IndexKeyConfig(token_list, case_sensitive=False, index_type='text', doc_value=False, alias=None,
                                  json_key_config=None, chinese=None)
    # 構造index_detail配置資訊
    key_config_list = {"key_1": index_config, "key_2": index_config}
    index_detail = IndexConfig(ttl, line_config, key_config_list, all_keys_config=None, log_reduce=None)

    # 為指定Logstore建立索引
    res = client.create_index(project_name, logstore_name, index_detail)
    res.log_print()


if __name__ == '__main__':
    main()

樣本返回結果

CreateIndexResponse:
headers: {'Server': 'AliyunSLS', 'Content-Length': '0', 'Connection': 'keep-alive', 'Access-Control-Allow-Origin': '*', 'Date': 'Sat, 12 Oct 2024 06:27:20 GMT', 'x-log-time': '1728714440', 'x-log-requestid': '670A16C88F14B9A316BC3ADE'}

Process finished with exit code 0

相關文檔