一、聚合分析統(tǒng)計(jì)
在開(kāi)發(fā)過(guò)程中芳室,我們經(jīng)常會(huì)碰到各種統(tǒng)計(jì)分類(lèi)的需求专肪,比如獲取一個(gè)數(shù)據(jù)集的總和、平均值堪侯、統(tǒng)計(jì)每個(gè)月的訂單數(shù)量嚎尤、每個(gè)月的注冊(cè)用戶數(shù)量等等,傳統(tǒng)的手段是使用mysql伍宦,不過(guò)當(dāng)遇到這種需求的時(shí)候芽死,往往會(huì)成為系統(tǒng)的查詢(xún)瓶頸。不過(guò)es對(duì)于這種聚合查詢(xún)提供了很好的支持次洼,也能夠允許存儲(chǔ)很大的一個(gè)數(shù)據(jù)量关贵。我們接下來(lái)看看如何使用
二、aggs
如下一個(gè)es 的restful api查詢(xún)
{
"query": {
"bool": {
"filter": [{
"range": {
"create_time": {
"gt": 1563897600,
"lt": 1563984000
}
}
}],
"must": [{
"match": {
"game_id": 4
}
}]
}
},
"explain": true,
"aggs": {
"sales_over_time": {
"date_histogram": {
"field": "date",
"calendar_interval": "hour",
"format": "H",
"keyed": true,
"time_zone": "+08:00"
}
}
}
}
分析:
bool中主要是查詢(xún)條件卖毁,查詢(xún)create_time在1563897600和1563984000的區(qū)間揖曾,并且game_id等于4的文檔數(shù)據(jù)
aggs是聚合查詢(xún)的關(guān)鍵詞,按照時(shí)間進(jìn)行聚合統(tǒng)計(jì)亥啦,統(tǒng)計(jì)一天中每個(gè)小時(shí)的數(shù)量
如下顯示
image.png