簡介:本周課程(19~22講)阮一鳴老師詳細的講解如何設定Elasticsearch Mapping,并通過配置 Mapping 實作自定義Analyzer,同時運用 Index Template 和 Dynamic Template 更友善的設計Mapping 索引,還簡單介紹了 Elasticsearch 多種聚合分析方式。
https://developer.aliyun.com/topic/elasticsearch講師:阮一鳴——eBay Pronto 平台技術負責人、極客時間『Elasticsearch 核心技術與實戰』課程講師
課程為了更多同學能快速體驗 Elasticsearch,為大家提供了免費的阿裡雲 Elasticsearch (3節點1核2G)的測試環境>>>>
去開通

課程回顧
19 | 顯式Mapping設定與常見參數介紹 20 | 多字段特性及Mapping中配置自定義Analyzer 21 | Index Template和Dynamic Template 22 | Elasticsearch聚合分析簡介知識點 1 :顯式Mapping設定與常見參數介紹
如何顯示定義一個 Mapping
定義 Mapping 僅需調用“PUT”的索引文字,就可以建立,同時加上 Mapping 定義文字,是一個 Jason 格式。
自定義 Mapping 的一些建議
1、可以參考 API 手冊,純手寫
2、通過以下步驟可減少輸入工作量、減少出錯率
• 建立一個臨時的 index,寫入一些樣本資料
• 通過通路 Mapping API 獲得該臨時檔案的動态 Mapping 定義
• 修改後用,使用該配置建立你的索引
• 删除臨時索引
自定義 Mapping 優勢
1、通過Index--控制目前字段是否被索引,預設為 true ,設定為 “false”,該字段不可被搜尋,且節約存儲開銷
2、反向索引(Index Options)建立,有四種不同級别配置,除了“Text”類型預設記錄“postions”,其他預設為 “docs”,記錄内容越多,占用存儲越多
3、當你需要對“null—value”實作搜尋,隻需在 Mapping 檔案中,對“null-value”指定為你需要的值
4、由于“_ all”在7.0版本中已被取消,要實作這個功能我們可以用“copy_to”來實作
“copy_to ”将字段數字拷貝到目标字段,實作類似“_all”的作用
“copy_to ”的目标字段不出現在“_source”中
數組類型
Elasticsearch 中不提供專門的數組類型,但任何字段,都可以包含多個相同類型的數值。
知識點 2 :多字段特性及Mapping中配置自定義Analyzer
多字段特性
1、當我們為索引設定 Mapping 檔案時,我們可以為字段增加一個子字段,如在預設情況下,“Text”ES都會有一個預設的“keyword”字段,
2、使用不同的 analyzer ,實作不同語言進行分詞,如英文;以 “pinyin”方式搜尋,還支援為搜尋和索引指定不同的 analyzer。
精确值和全文本比較
精确值:包括數字/日期/具體一個字元串(如“Apple Stroe”)
在ES 中,該類指以“keyword”來表示,不做分詞處理。
全文本:非結構化的文本資料。
在ES 中,該類指定為“Text”需要進行分詞處理。
自定義分詞
當 Elasticsearch 自帶分詞無法滿足時,可以自定義分詞器,通過自祝賀不同的元件實作。
Character Filter
① 在Tokenizer 之前對文本進行處理,例如增加删除及替換字元。可以配置多個 Character Filters。會影響 Tokenizer 的 position 和offset 資訊。
② 一些自帶的 Character Filters
HTML strip— 去除HTML标簽
Mapping — 字元串替換
Pattern replace — 正則比對替換
Tokenizer
① 将原始文本按照一定規則,切分為 term or token
② Elasticsearch 内置的 Tokenizers
whitespace/standard/uax_url_email/pattern/keyword/path hierarchy
③ 可以用 Java 開發插件,實作自己的 Tokenizer
Token Filter
① 将 Tokenizer 輸出的單詞(term),進行增加、修改、删除
② Elasticsearch 自帶的 Token Filters
Lowercase/stop/synonym(添加近義詞)
設定一個 Custom Analyzer
當 Elasticsearch 以上的分詞無法滿足需求,在建立索引時,可以自定義自己的 Custom Analyzer
知識點 3 :Index Template 和 Dynamic Template
在業務進行中,叢集上會有越來越多的索引,如果你是做日志管理,你會為你的日志每天建立一個索引,因為這樣可以更好的管理你的資料,并提高性能。
Index Template
按照一定規則,自動比對到新建立的索引上,設定 Mapping 和 Setting
① 模闆會在一個新建立索引時産生作用,修改模闆不會影響已建立的模闆
② 設定多個索引模闆,這些設定會被“merge”在一起
③ 可以指定“order”設定,控制“merging”的過程
Index Template 工作方式
當一個索引被建立時
① 應用 Elasticsearch 預設的 settings 和 mappings
② 應用 order 數值低的 Index Template 中的設定
③ 應用 order 高的 Index Template 中的設定,之前的設定會被覆寫
④ 應用建立索引是,使用者所指定的 Settings 和Mappings,并覆寫之前模闆中的設定。
什麼是 Dynamic Template
應用在具體的索引上,根據 Elasticsearch 識别的資料類型,結合字段名稱,來動态設定字段類型
①可以實作所有字元串類型設定為“keyword”或者關閉“keyword”字段
②“is”開通的字段設定成“boolean”
③“long_”開頭的都設定成“long”類型
1、設定在某個索引的 Mapping 中
2、設定一個 Template 名稱
3、設定比對規格數組
4、設定比對到字段 設定 Mapping
比對規則參數
① match_mapping_type:比對自動識别的字段類型,如string,boolean等
② match,unmatch:比對字段名
③ path_match,path_unmatch
知識點 4 :Elasticsearch聚合分析簡介
什麼是聚合(Aggregation)
Elasticsearch除搜尋以外,同時提供統計分析功能,具有實時性高,同樣的功能Hadoop上需要多出一天時間。通過聚合,可以幫助我們得到資料概覽。
① 高性能
② 無需用戶端自己去實作分析邏輯。
Kibana 可視化報表-聚合分析
Kibana 報表也是用 Elasticsearch 聚合分析實作的。
聚合的分類,共分為 4 大類
一、Bucket Aggregation:一些列把滿足特東條件的文檔聚合
二、Metric Aggregation:一些數字運算,可以對文檔字段進行統計分析
①Metric 會基于資料集計算結果,除了支援在字段上進行計算,同樣也支援在腳本(painless script)産生的結果之上進行計算
②大多數 Metric 是資料計算,僅輸出一個值
③部分 Metric 支援輸出多個數值
舉個例子(Bucket & Metric)
Bucket Aggregation
加入 Metrics
嵌套Aggregation
三、Pipeline Aggregation:對其他的聚合結果進行二次聚合
四、Matix Aggregation:支援對多個字段的操作并提供一個結果矩陣
下周課程預告
點選預約課程
23 | 入門課程總結相關活動
更多折扣活動,請通路
阿裡雲 Elasticsearch 官網 • 阿裡雲 Elasticsearch 商業通用版,1核2G首月免費•
阿裡雲 Elasticsearch 日志增強版,首月六折,年付六折 阿裡雲 Logstash 2核4G首月免費