調用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 | 否 | 是否開啟日誌聚類。開啟後白名單與黑名單只生效其中一個。
|
IndexLineConfig參數說明:
名稱 | 類型 | 是否必填 | 說明 |
token_list | List | 是 | 分詞符列表。按照給出的分詞符列表進行詞語的劃分。例如指定分詞符列表包含 |
case_sensitive | bool | 否 | 是否大小寫敏感。
|
chinese | bool | 否 | 是否啟用中文分詞功能。開啟中文分詞後,shard的讀寫能力會有一定下降。
|
IndexKeyConfig參數說明:
名稱 | 類型 | 是否必填 | 說明 |
index_type | String | 否 | 索引類型。預設為
|
token_list | List | 是 | 分詞符列表。按照給出的分詞符列表進行詞語的劃分。例如指定分詞符列表包含 |
case_sensitive | bool | 否 | 是否大小寫敏感。
|
doc_value | bool | 否 | 是否開啟統計分析功能,開啟後該欄位可用於分析語句。 |
alias | String | 否 | 索引鍵的別名。 |
json_key_config | IndexJsonKeyConfig | 否 | IndexJsonKeyConfig類,當index_type為 |
chinese | bool | 否 | 是否啟用中文分詞功能。開啟中文分詞後,shard的讀寫能力會有一定下降。
|
IndexJsonKeyConfig參數說明:
名稱 | 類型 | 是否必填 | 說明 |
index_all | bool | 否 | 如果JSON鍵中的所有字串值都應該被索引,則設定為True。 |
max_depth | int | 否 | index_all為True時,只有當JSON值的 |
alias | String | 否 | 索引鍵的別名。 |
json_keys | Dict[str, JsonKeyConfigValue] | 否 | JSON欄位內嵌套的子欄位索引配置。可通過調用IndexJsonKeyConfig執行個體的add_key方法添加子欄位。例如日誌欄位為: 可以配置欄位 |
返回參數
返回參數請參見: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
相關文檔
管理Index的API請參見:
更多範例程式碼,請參見Aliyun Log Python SDK on GitHub。