前言
本篇就是ES初級知識的最後一篇了,初識Index Template和Aggregation,發現這兩塊內容實在是至關複雜,在es提升中進行進一步探索。本篇簡單瞭解一些它們是什麼sql
Index Template
什麼是Index Template
- Index Template - 幫助設定Mappings和Settings,並按照必定的規則,自動匹配到新建立的索引之上
- 模板僅在一個索引被新建立時,纔會產生做用。修改模板不會影響已建立的索引
- 能夠設定多個索引模板,這些設置會被「merge」在一塊兒
- 能夠指定「order」的數值,控制「merging」的過程
舉例
規則:全部索引建立時候,主分片和副本分片都是1數組
索引以index開頭的,就把replica設置成2,app
映射轉換設置,關閉字符串自動轉date,開啓字符串自動轉數字框架
工做方式
- 當一個索引被建立時
- 應用Elasticsearch默認的 settings 和 mappings
- 應用order數值低的Index Template中的設定
- 應用order高的Index Template中的設定,以前的設定會被覆蓋
- 應用建立索引時,用戶所指定的Setting和mapping,並覆蓋以前模板的設定
Dynamic Template
- Dynamic Template是定義在某個索引的mapping中
- Template有一個名稱
- 匹配規則是一個數組
- 爲匹配到字段設置Mapping
簡單瞭解,後續詳細擴展less
Elasticsearch聚合分析
什麼是聚合(Aggregation)
- Elasticsearch除搜索外,還可針對數據進行統計分析,這就是聚合
- 特色:實時性高
- 幫助進行搜索結果的過濾,無需再客戶端進行分析邏輯了
- 應用:Kibana可視化報表-聚合分析
- 崗位分佈
- 項目框架使用狀況
- 薪水分佈
- 地理位置分佈
- 訂單增加狀況
- 等等···
- 經過聚合,可獲得一個數據的概覽,對全套的數據進行分析和總結,而不是尋找單個文檔
- 如:客房數量
- 價格區間可預訂的不一樣星級酒店的數量
- 高性能,只要一條語句,就能夠從Elasticsearch獲得分析結果
集合的分類
Bucket Aggregation
Metric Aggregation
- 一些數據運算(最大最小平均值等),能夠對文檔字段進行統計分析
Pipeline Aggregation
Matrix Aggregation
Bucket & Metric
- Bucket - 一組知足條件的文檔,相似於sql中的
group by
- Metric - 一些系列的統計方法,相似於sql中的
count
Bucket
如圖:商品能夠分爲高中低檔,而在高檔桶中,又可分爲好中差類型性能
- Elasticsearch提供了不少類型的Bucket,可用多種方式劃分文檔
按照不一樣的目的地分桶,查詢獲得各個目的地統計結果3d
Metric
- Metric 基於數據集計算結果,除了支持在字段上進行計算,一樣支持在腳本(painless script)產生的結果上進行計算
- 大可能是Metric是數學計算,僅輸出一個值
- min / max / sum / avg / cardinality
- 部分metric支持輸出多個數值
- state(統計值,高低同時輸出)
- percentiles(百分位,根據百分位數輸出不通知)
- percentile_ranks
如圖,查看航班目的地的統計信息,獲得均價,最高最低價格code
Matrix
可在多個字段上進行操做,基於請求文檔的字段值,生成matrix結果。不一樣於桶聚合和度量聚合,matrix暫不支持腳本操做。cdn
Pipeline
管道聚合,對其餘聚合和相關度量的輸出進行聚合。blog
總結
- Index Template能夠定義Mappings和Settings,並自動的應用到新建立的索引之上,須要合理使用Index Template。
- Dynamic Template支持在具體的索引上指定規則,爲新增長的字段指定相應的Mappings
- Elasticsearch提供了Bucket/Metric/Pipeline/Matrix四種方式的聚合