在Serverless日志分析型應用中,您可以通過可視化方式管理您的索引,例如創建、修改、刪除索引等。本文介紹創建索引的方法,并介紹如何在索引中寫入數據并進行數據查詢。
前提條件
已創建日志分析型應用。具體操作,請參見創建日志分析型應用。
索引特點
日志分析型應用中的索引特點如下:
索引內置分片自動調優、智能滾動功能,您無需關注索引滾動、別名等復雜操作,讀寫時僅需指定索引名稱。
索引中的字段均采用以下規定:
索引只支持檢索,不支持算分(對文檔的相關性進行評估)。
檢索時會忽略索引字段中的大小寫。
text類型的字段,不支持通配符查詢。
默認分詞下,單個詞長度不超過255個字符。
未開啟主鍵寫入時,索引不支持按id進行讀寫,返回的id也沒有實際意義。
各個字段及數組內字段的順序會變化,對字段順序有依賴的請謹慎使用。
部分類型的字段格式會發生改變,例如時間字段、帶引號的數字等。解決格式變化的方法如下:
時間字段:指定時間字段的format。
帶引號的數字:寫入時不帶引號。
使用科學計數法存儲數值型的double、long類型字段:對double、long 類型不進行科學計數法格式數據存儲。
創建索引
在頂部菜單欄,選擇目標地域。
說明目前僅支持華東1(杭州)、華北2(北京)、華東2(上海)和華南1(深圳)地域。
在左側導航欄,單擊應用管理。
在應用管理頁面,單擊目標應用名稱。
在左側導航欄,選擇
。單擊創建索引。
在創建索引面板,填寫索引配置信息。
大類
項目
描述
基礎配置
索引名稱
自定義的索引名稱。
字段映射
手動設置索引的字段映射。
字段名稱:自定義索引數據的字段名稱。
字段類型:可供選擇的數據類型包括boolean、long、double、keyword、text、date、object、match_only_text。如果您需要設置更多的字段類型,可以切換至JSON編輯模式中編輯。
說明支持的字段類型,請參見 Field data types。
date類型的字段格式:請參見mapping-date-format。
開啟索引:啟用索引后會對該字段構建索引,字段可用于檢索。
開啟統計:暫不支持修改該配置。開啟統計后支持對字段值做統計分析,但會增加索引存儲空間。
分詞符:text字段類型支持編輯分詞符,分詞符的作用是將字段內容拆分成多個詞。默認的分詞符為
whitespace'";=()[]{}?@&<>/:\n\t\r#\|,
。
通過輸入樣例自動配置生成索引的字段映射。
單擊輸入樣例自動配置,在輸入框內輸入JSON格式的數據,單擊確定,平臺校驗無誤后,自動將字段映射到字段映射表中。
JSON格式的數據樣例:
{ "bool_field": true, "date_field": "20220126", "double_field": 3.14, "keyword_field": "這是一行不需要分詞的文本", "long_field": 126, "object_field": { "sub_field": 2022 }, "text_field": "這是一行需要分詞的文本,文本長度超過36個字符的會被推斷為需要分詞,定義為text類型" }
在JSON模式下設置字段映射。
在字段映射區域的右上角,單擊切換至JSON 編輯模式,在JSON模式下編輯字段映射。
說明切換模式時,配置信息將自動在兩種模式間進行同步。
JSON示例:
{ "settings": { "index": { "apack": { "protection": { "index": { "forbid_id": true } } }, "merge_dynamic_fields": { "enable": false }, "timeseries": { "expiration_days": 7, "advanced_indexing_optimization": { "enabled": true }, "auto_data_organization": { "enabled": true } }, "sort": { "field": [ "date_field" ], "order": [ "desc" ] } } }, "mappings": { "dynamic": "true", "properties": { "bool_field": { "type": "boolean", "doc_values": true, "index": true }, "date_field": { "type": "date", "format": "basic_date", "doc_values": true, "index": true }, "double_field": { "type": "double", "doc_values": true, "index": true }, "keyword_field": { "type": "keyword", "doc_values": true, "index": true }, "long_field": { "type": "long", "doc_values": true, "index": true }, "object_field": { "type": "object", "properties": { "sub_field": { "type": "long", "doc_values": true, "index": true } } }, "text_field": { "type": "text", "analyzer": "lineAnalyzer", "doc_values": false, "index": true, "term_hash_enable": true } } } }
時間字段
選擇用于記錄數據時間的字段,字段類型需為date類型。
說明索引創建完成后,不支持修改和刪除時間字段。
數據保存時間
限時保存:保存索引數據的時間,可選范圍為1~365天。
永久保存:永久保存索引數據。
高級配置
帶主鍵寫入
開啟后,寫入CU及存儲空間都會顯著增加,更新文檔時可能出現更新失敗或重復寫入文檔的情況。
自動數據整理
開啟后,定期通過無損的force merge對索引進行整理,提升查詢性能和優化存儲空間,但會帶來額外的寫入CU消耗。
說明force merge操作帶來的資源消耗可以在監控中心查看。
寫入深度優化
開啟后,會自動調整索引結構,對索引的寫入性能及存儲成本有明顯優化。但存在使用限制,如不支持前綴查詢等,具體信息請參見寫入深入優化。
動態字段配置
索引接收到的寫入字段不在字段映射中的處理方式:
識別:根據新字段的數據類型,自動添加到字段映射中。
說明開啟動態字段識別,即將索引的dynamic字段值設置為true。
新字段為text類型時,默認采用lineAnalyzer。
對默認text類型字段進行match_phrase查詢時會有查詢截斷行為,可能導致查詢結果不準確。
合并:不添加到字段映射中,合并到@_all_@。
忽略:不做任何處理,僅在原文中保留。
報錯:檢測到新字段時拋出異常。
單擊確定。
索引數據寫入和查詢
登錄Serverless應用的Kibana控制臺。具體操作,請參見通過Kibana使用Serverless應用。
在頁面左上角單擊圖標,選擇
。您可以執行以下代碼對索引進行操作。
查看索引映射詳情:
GET test/_mapping
返回結果:
{ "test" : { "mappings" : { "dynamic" : "true", "_meta" : { "app_id" : "qning-***", "index_name" : "test" }, "dynamic_templates" : [ { "match_tag" : { "match" : "*", "match_mapping_type" : "string", "mapping" : { "analyzer" : "lineAnalyzer", "term_hash_enable" : true, "type" : "match_only_text" } } } ], "properties" : { "bool_field" : { "type" : "boolean" }, "date_field" : { "type" : "date", "format" : "basic_date" }, "double_field" : { "type" : "double" }, "keyword_field" : { "type" : "keyword", "term_hash_enable" : true }, "long_field" : { "type" : "long" }, "object_field" : { "properties" : { "sub_field" : { "type" : "long" } } }, "text_field" : { "type" : "match_only_text", "analyzer" : "lineAnalyzer", "term_hash_enable" : true } } } } }
索引中插入數據:
POST test/_bulk { "index" : {} } {"bool_field":true,"date_field":"20230901","double_field":3.14,"keyword_field":"Elasticsearch Serverless","long_field":126,"object_field":{"sub_field":2023},"text_field":"Elasticsearch Serverless服務可以為您提供簡單易用、彈性靈活、開箱即用的Elasticsearch產品體驗,您無須管理Elasticsearch集群資源及配置。"}
返回結果:
{ "took" : 20, "errors" : false, "items" : [ { "index" : { "_index" : ".ts@test@20240920170712", "_type" : "_doc", "_id" : "3yewDpIBzu2YeHCV92dK", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 1, "status" : 201 } } ] }
查詢索引中的數據:
GET test/_search { "query": { "match": { "keyword_field": "Elasticsearch Serverless" } } }
返回結果:
{ "took" : 39, "timed_out" : false, "_shards" : { "total" : 6, "successful" : 6, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 0.2876821, "hits" : [ { "_index" : ".ts@test@20240920170712", "_type" : "_doc", "_id" : "f_J2uxDpIBBqbPspEIglF4", "_score" : 0.2876821, "_source" : { "object_field" : { "sub_field" : 2023 }, "text_field" : "Elasticsearch Serverless服務可以為您提供簡單易用、彈性靈活、開箱即用的Elasticsearch產品體驗,您無須管理Elasticsearch集群資源及配置。", "bool_field" : true, "long_field" : 126, "double_field" : 3.14, "keyword_field" : "Elasticsearch Serverless", "date_field" : "20230901" } } ] } }
其他操作
您可以在應用的索引列表頁面,查看、修改索引配置,或刪除索引。
項目 | 說明 |
查看索引配置 | 在目標索引的操作列,單擊修改配置,查看索引的具體配置。 |
修改索引配置 | 在目標索引的操作列,單擊修改配置,修改索引的配置。
|
刪除索引 | 在目標索引的操作列,單擊刪除,刪除索引。 |