天天看點

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)

簡介:本周課程(19~22講)阮一鳴老師詳細的講解如何設定Elasticsearch Mapping,并通過配置 Mapping 實作自定義Analyzer,同時運用 Index Template 和 Dynamic Template 更友善的設計Mapping 索引,還簡單介紹了 Elasticsearch 多種聚合分析方式。

講師:阮一鳴——eBay Pronto 平台技術負責人、極客時間『Elasticsearch 核心技術與實戰』課程講師

課程為了更多同學能快速體驗 Elasticsearch,為大家提供了免費的阿裡雲 Elasticsearch (3節點1核2G)的測試環境>>>>

去開通
https://developer.aliyun.com/topic/elasticsearch
【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)
https://developer.aliyun.com/topic/elasticsearch

課程回顧

19 | 顯式Mapping設定與常見參數介紹 20 | 多字段特性及Mapping中配置自定義Analyzer 21 | Index Template和Dynamic Template 22 | Elasticsearch聚合分析簡介

知識點 1 :顯式Mapping設定與常見參數介紹

如何顯示定義一個 Mapping

定義 Mapping 僅需調用“PUT”的索引文字,就可以建立,同時加上 Mapping 定義文字,是一個 Jason 格式。

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)
自定義 Mapping 的一些建議

1、可以參考 API 手冊,純手寫

2、通過以下步驟可減少輸入工作量、減少出錯率

• 建立一個臨時的 index,寫入一些樣本資料

• 通過通路 Mapping API 獲得該臨時檔案的動态 Mapping 定義

• 修改後用,使用該配置建立你的索引

• 删除臨時索引

自定義 Mapping 優勢

1、通過Index--控制目前字段是否被索引,預設為 true ,設定為 “false”,該字段不可被搜尋,且節約存儲開銷

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)

2、反向索引(Index Options)建立,有四種不同級别配置,除了“Text”類型預設記錄“postions”,其他預設為 “docs”,記錄内容越多,占用存儲越多

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)

3、當你需要對“null—value”實作搜尋,隻需在 Mapping 檔案中,對“null-value”指定為你需要的值

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)

4、由于“_ all”在7.0版本中已被取消,要實作這個功能我們可以用“copy_to”來實作

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)
“copy_to ”将字段數字拷貝到目标字段,實作類似“_all”的作用

“copy_to ”的目标字段不出現在“_source”中

數組類型

Elasticsearch 中不提供專門的數組類型,但任何字段,都可以包含多個相同類型的數值。

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)

知識點 2 :多字段特性及Mapping中配置自定義Analyzer

多字段特性

1、當我們為索引設定 Mapping 檔案時,我們可以為字段增加一個子字段,如在預設情況下,“Text”ES都會有一個預設的“keyword”字段,

2、使用不同的 analyzer ,實作不同語言進行分詞,如英文;以 “pinyin”方式搜尋,還支援為搜尋和索引指定不同的 analyzer。

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)

精确值和全文本比較

精确值:包括數字/日期/具體一個字元串(如“Apple Stroe”)

在ES 中,該類指以“keyword”來表示,不做分詞處理。

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)

全文本:非結構化的文本資料。

在ES 中,該類指定為“Text”需要進行分詞處理。

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)

自定義分詞

當 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

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)

知識點 3 :Index Template 和 Dynamic Template

在業務進行中,叢集上會有越來越多的索引,如果你是做日志管理,你會為你的日志每天建立一個索引,因為這樣可以更好的管理你的資料,并提高性能。

Index Template

按照一定規則,自動比對到新建立的索引上,設定 Mapping 和 Setting

① 模闆會在一個新建立索引時産生作用,修改模闆不會影響已建立的模闆

② 設定多個索引模闆,這些設定會被“merge”在一起

③ 可以指定“order”設定,控制“merging”的過程

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)

Index Template 工作方式

當一個索引被建立時

① 應用 Elasticsearch 預設的 settings 和 mappings

② 應用 order 數值低的 Index Template 中的設定

③ 應用 order 高的 Index Template 中的設定,之前的設定會被覆寫

④ 應用建立索引是,使用者所指定的 Settings 和Mappings,并覆寫之前模闆中的設定。

什麼是 Dynamic Template

應用在具體的索引上,根據 Elasticsearch 識别的資料類型,結合字段名稱,來動态設定字段類型

①可以實作所有字元串類型設定為“keyword”或者關閉“keyword”字段

②“is”開通的字段設定成“boolean”

③“long_”開頭的都設定成“long”類型

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)
1、設定在某個索引的 Mapping 中

2、設定一個 Template 名稱

3、設定比對規格數組

4、設定比對到字段 設定 Mapping

比對規則參數

① match_mapping_type:比對自動識别的字段類型,如string,boolean等

② match,unmatch:比對字段名

③ path_match,path_unmatch

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)

知識點 4 :Elasticsearch聚合分析簡介

什麼是聚合(Aggregation)

Elasticsearch除搜尋以外,同時提供統計分析功能,具有實時性高,同樣的功能Hadoop上需要多出一天時間。通過聚合,可以幫助我們得到資料概覽。

① 高性能

② 無需用戶端自己去實作分析邏輯。

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)

Kibana 可視化報表-聚合分析

Kibana 報表也是用 Elasticsearch 聚合分析實作的。

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)

聚合的分類,共分為 4 大類

一、Bucket Aggregation:一些列把滿足特東條件的文檔聚合

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)

二、Metric Aggregation:一些數字運算,可以對文檔字段進行統計分析

①Metric 會基于資料集計算結果,除了支援在字段上進行計算,同樣也支援在腳本(painless script)産生的結果之上進行計算

②大多數 Metric 是資料計算,僅輸出一個值

③部分 Metric 支援輸出多個數值

舉個例子(Bucket & Metric)

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)

Bucket Aggregation

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)

加入 Metrics

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)

嵌套Aggregation

【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)

三、Pipeline Aggregation:對其他的聚合結果進行二次聚合

四、Matix Aggregation:支援對多個字段的操作并提供一個結果矩陣

下周課程預告

點選預約課程

23 | 入門課程總結

相關活動

更多折扣活動,請通路

阿裡雲 Elasticsearch 官網 • 阿裡雲 Elasticsearch 商業通用版,1核2G首月免費

阿裡雲 Elasticsearch 日志增強版,首月六折,年付六折 阿裡雲 Logstash 2核4G首月免費
【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)
【Elasticsearch 入門公開課】如何配置 ES-Mapping/Analyzer 及多種聚合分析介紹-回顧篇(5)