Elasticsearch入門(4)-初識Index Template和Aggregation

前言

本篇就是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,可用多種方式劃分文檔
    • Term & Range (時間/年齡/位置)

按照不一樣的目的地分桶,查詢獲得各個目的地統計結果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四種方式的聚合
相關文章
相關標籤/搜索