ElasticSearch學(xué)習(xí)筆記(3)——聚合

前言

ES中的聚合功能類似于數(shù)據(jù)庫中g(shù)roup by語句,但是功能更為強(qiáng)大。


1. 概念

SELECT COUNT(color) //指標(biāo)

FROM table

GROUP BY color //桶

1.1 桶(Buckets):滿足特定條件的文檔集合

1.2 指標(biāo)(Metrics):桶內(nèi)文檔的統(tǒng)計(jì)計(jì)算


2.基本語法

2.1 例子1

{

? ?"size" : 0,

? "aggs": { //第一個(gè)桶

? ? ? "colors": { //指定桶名稱

? ? ? ? "terms": { //指定聚合類型

? ? ? ? ? ? "field": "color"

? ? ? ? },

? ? ? ? "aggs": { //嵌套桶

? ? ? ? ? ? "avg_price": { "avg": { "field": "price" } // 指定聚合類型

? ? ? ? ? ? },

? ? ? ? ? ? "make" : { // 桶名稱

? ? ? ? ? ? ? ? "terms" : {?// 指定聚合類型

? ? ? ? ? ? ? ? ? ? "field" : "make"

? ? ? ? ? ? ? ? },

? ? ? ? ? ? ? ? "aggs" : { //嵌套桶

? ? ? ? ? ? ? ? ? ? "min_price" : { "min": { "field": "price"} },??// 指定聚合類型

? ? ? ? ? ? ? ? ? ? "max_price" : { "max": { "field": "price"} }??// 指定聚合類型

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? ? }

? }

}

2.2 例子2:histogram

"aggs":{

? ? ? "price":{

? ? ? ? "histogram":{ "field": "price", "interval": 20000 },

? ? ? ? "aggs":{

? ? ? ? ? ? ? "revenue": {

? ? ? ? ? ? ? "sum": {"field" : "price"}

? ? ? ? ? ? }

? ? ? ? }

? ? ? }

? }

2.3 例子3:date_histogram以及強(qiáng)制返回空桶

"aggs": {

? ? ? "sales": {

? ? ? ? "date_histogram": {

? ? ? ? ? ? "field": "sold",

? ? ? ? ? ? "interval": "month",

? ? ? ? ? ? "format": "yyyy-MM-dd",

? ? ? ? ? ? "min_doc_count" : 0, //強(qiáng)制返回空buckets

? ? ? ? ? ? "extended_bounds" : { //強(qiáng)制返回整年

? ? ? ? ? ? ? ? "min" : "2014-01-01",

? ? ? ? ? ? ? ? "max" : "2014-12-31"

? ? ? ? ? ? }

? ? ? ? }

? ? ? }

? }

2.4 例子4:后過濾器(只過濾搜索結(jié)果竟闪,不過濾聚合結(jié)果)post-filter

{

? ? "size" : 0,

? ? "query": {"match": {"make": "ford"}},

? ? "post_filter": {? ?

? ? ? ? "term" : { "color" : "green" }

? ? },

? ? "aggs" : {

? ? ? ? "all_colors": { "terms" : { "field" : "color" }}

? ? }

}

2.5 例子5:桶內(nèi)置排序

"aggs" : {

? ? ? ? "colors" : {

? ? ? ? ? ? "terms" : {

? ? ? ? ? ? ? "field" : "color",

? ? ? ? ? ? ? "order": {"_count" : "asc" } //按文檔數(shù)量排序

? ? ? ? ? ? }

? ? ? ? }

? ? }

2.6 例子6:按度量排序

"aggs" : {

? ? ? ? "colors" : {

? ? ? ? ? ? "terms" : {

? ? ? ? ? ? ? "field" : "color",

? ? ? ? ? ? ? "order": { "avg_price" : "asc" }

? ? ? ? ? ? },

? ? ? ? ? ? "aggs": {

? ? ? ? ? ? ? ? "avg_price": {"avg": {"field": "price"}

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? }

2.7 例子7:基于深度度量排序

"aggs" : {

? ? ? ? "colors" : {

? ? ? ? ? ? "histogram" : {

? ? ? ? ? ? ? "field" : "price",

? ? ? ? ? ? ? "interval": 20000,

? ? ? ? ? ? ? "order": {"red_green_cars>stats.variance" : "asc" } // 將度量用>嵌套

? ? ? ? ? ? },

? ? ? ? ? ? "aggs": {

? ? ? ? ? ? ? ? "red_green_cars": {

? ? ? ? ? ? ? ? ? ? "filter": { "terms": {"color": ["red", "green"]}},

? ? ? ? ? ? ? ? ? ? "aggs": {

? ? ? ? ? ? ? ? ? ? ? ? "stats": {"extended_stats": {"field" : "price"}}

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? }



3.近似聚合

3.1?cardinality(去重)

1)語法

"aggs" : {

? ? ? ? "distinct_colors" : { "cardinality" : { "field" : "color","precision_threshold" : 100}}

//precision_threshold 表示在何種基數(shù)下希望得到一個(gè)近乎精確的結(jié)果

? ? }

2)原理

使用HyperLogLog(HLL)算法,該算法也應(yīng)用于redis中揭璃,優(yōu)點(diǎn)是狮斗,即使輸入元素的數(shù)量或者體積非常非常大,計(jì)算基數(shù)所需的空間總是固定的补疑、并且是很小的歧沪,redis中只需要12K內(nèi)存,在標(biāo)準(zhǔn)誤差0.81%的前提下莲组,能夠統(tǒng)計(jì)2^64個(gè)基數(shù)槽畔。

stream-lib 實(shí)現(xiàn)了一個(gè)java版本的HHL:https://github.com/addthis/stream-lib/blob/master/src/main/java/com/clearspring/analytics/stream/cardinality/HyperLogLog.java


3.2?percentiles、percentile_ranks(百分位計(jì)算)

1)語法

percentiles :默認(rèn)情況下胁编,percentiles會(huì)返回一組預(yù)定義的百分位數(shù)值[1, 5, 25, 50, 75, 95, 99]厢钧,體現(xiàn)的是某個(gè)百分比以下所有文檔的最小值

"aggs" : {

? ? ? ? "zones" : {

? ? ? ? ? ? "terms" : { "field" : "zone"},

? ? ? ? ? ? "aggs" : {

? ? ? ? ? ? ? ? "load_times" : {

? ? ? ? ? ? ? ? ? ? "percentiles" : {?

? ? ? ? ? ? ? ? ? ? ? "field" : "latency",

? ? ? ? ? ? ? ? ? ? ? "percents" : [50, 95.0, 99.0] //感興趣的百分比

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? },

????????????????{"avg_load_avg" : { "avg" : { "field" : "latency" } }}

? ? ? ? ? ? }

? ? ? ? }

? ? }

percentile_ranks:體現(xiàn)的是某個(gè)具體值屬于哪一個(gè)百分比等級

"aggs" : {

? ? ? ? "zones" : {

? ? ? ? ? ? "terms" : { "field" : "zone"},

? ? ? ? ? ? "aggs" : {

? ? ? ? ? ? ? ? "load_times" : {

? ? ? ? ? ? ? ? ? ? "percentile_ranks" : {

? ? ? ? ? ? ? ? ? ? ? "field" : "latency",

? ? ? ? ? ? ? ? ? ? ? "values" : [210, 800]

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? }

2)原理

使用TDigest算法

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市嬉橙,隨后出現(xiàn)的幾起案子早直,更是在濱河造成了極大的恐慌,老刑警劉巖市框,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霞扬,死亡現(xiàn)場離奇詭異,居然都是意外死亡枫振,警方通過查閱死者的電腦和手機(jī)喻圃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粪滤,“玉大人斧拍,你說我怎么就攤上這事≌刃。” “怎么了肆汹?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵愚墓,是天一觀的道長。 經(jīng)常有香客問我昂勉,道長浪册,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任岗照,我火速辦了婚禮村象,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘攒至。我一直安慰自己煞肾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布嗓袱。 她就那樣靜靜地躺著籍救,像睡著了一般。 火紅的嫁衣襯著肌膚如雪渠抹。 梳的紋絲不亂的頭發(fā)上蝙昙,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機(jī)與錄音梧却,去河邊找鬼奇颠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛放航,可吹牛的內(nèi)容都是我干的烈拒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼广鳍,長吁一口氣:“原來是場噩夢啊……” “哼荆几!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起赊时,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤吨铸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后祖秒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诞吱,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年竭缝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了房维。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抬纸,死狀恐怖咙俩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情松却,我是刑警寧澤暴浦,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布溅话,位于F島的核電站晓锻,受9級特大地震影響歌焦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜砚哆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一独撇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧躁锁,春花似錦纷铣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至槐秧,卻和暖如春啄踊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背刁标。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工颠通, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人膀懈。 一個(gè)月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓顿锰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親启搂。 傳聞我的和親對象是個(gè)殘疾皇子硼控,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容