聚合

es的聚合總共分為四種aggregations
1.bucketing(桶聚合,group by的操作)
2.meric(指標聚合,min,max,count,avg,sum等操作)
3.matrix,可以對文檔進行一些統(tǒng)計,但是不支持腳本,上面兩個都是支持腳本的
4.pipeline,可以對聚合結(jié)果進行二次聚合

聚合分析算是es提供的功能的第二大功能,第一大是搜索,如果在數(shù)據(jù)量不是很大,對聚合的實時性和要求不高的情況下,可以替流處理和批處理,當然etl數(shù)據(jù)清洗的步驟還是要的,在實時性上,以定時任務(wù)去分析es中的數(shù)據(jù)對于快速搭建監(jiān)控平臺是很好的一個手段,但是當數(shù)據(jù)量過大,而要求很高的實時性和準確性時,es略顯有點疲軟,還是得依賴于批處理和流處理這種大數(shù)據(jù)計算框架.
1.bucketing

2.meric 指標聚合

以kibana提供的樣本數(shù)據(jù)kibana_sample_data_flights為例,查詢所有機票的平均價格,總和,最大,最小,stats一個指標可以聚合上述的幾個結(jié)果,missing 代表如果這個doc沒有這個字段該如何處理

GET kibana_sample_data_flights/_search
{
  "size": 0,
  "aggs": {
    "avg_price": {
      "avg": {
        "field": "AvgTicketPrice",
        "missing":10
      }
    },
    "sum_price": {
      "sum": {
        "field": "AvgTicketPrice"
      }
    },
    "min_price": {
      "min": {
        "field": "AvgTicketPrice"
      }
    },
      "max_price": {
        "max": {
          "field": "AvgTicketPrice"
        }
      },
      "total_stats":{
        "stats": {
          "field": "AvgTicketPrice"
        }
      }
  }
}

利用腳本,腳本的威力就在于可以自定義一些條件,然后修改一些值,比如給AvgTicketPrice先調(diào)高個10塊錢,再去聚合結(jié)果

{
  "size": 0, 
    "aggs" : {
        "avg_corrected_grade" : {
            "avg" : {
                "field" : "AvgTicketPrice",
                "script" : {
                    "lang": "painless",
                    "source": "_value + params.sub",
                    "params" : {
                        "sub" : 10
                    }
                }
            }
        }
    }
}


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容