ps. 以下請求體對應(yīng)es 6.x版本下的使用
假設(shè)我們有一個如下mapping的索引
{
????"properties": {
????????"id": {
????????????"type": "keyword"
????????},?
????????"submitAt": {
????????????"type": "date"
????????},
? ? ? ? "user": {
? ? ? ? ? ? "properties": {
????????????????"id": {
????????????????????"type": "integer"
????????????????}
? ? ? ? },
? ? ? ? "label": {
? ??????????"type": "keyword"
????????},
????????"comments": {
????????????"type":"nested",
? ? ? ? ? ? "properties":{
? ? ? ? ? ? ? ? ?"title":{
? ? ? ? ? ? ? ? ? ? ?"type": "keyword"
? ? ? ? ? ? ? ? ?},
? ? ? ? ? ? ? ? ?"submitAt":{
? ? ? ? ? ? ? ? ? ? ?"type": "date"
? ? ? ? ? ? ? ? ?}
????????}
}
1、簡單詞頻統(tǒng)計(每個label出現(xiàn)的次數(shù))
? ??"aggs": {
????????"agg_result": {
????????????"terms": {
????????????????"size": 1000,
????????????????"field": "label"
????????????}
????????}
????}
2、分組詞頻統(tǒng)計(按user分組統(tǒng)計每個label出現(xiàn)的次數(shù))
? ??"aggs": {
????????"agg_result": {
????????????"terms": {
????????????????"size": 1000,
????????????????"field": "user.id"
????????????},
????????????"aggs": {
????????????????"sub_agg_result": {
????????????????????"terms": {
????????????????????????"size": 1000,
????????????????????????"field": "label"
????????????????????}
????????????????}
????????????}
????????}
????}
3、去重聚合(統(tǒng)計去重后的user人數(shù))
????"aggs": {
????????"agg_distinct": {
????????????"cardinality": {
????????????????"field": "user.id"?
????????????}
????????}
????}
4、按時間分組聚合(統(tǒng)計每天的數(shù)據(jù)量)
? ??"aggs": {
????????"agg_result": {
????????????"date_histogram": {
????????????????"field": "submitAt", //這里必須是date類型字段
????????????????"format": "yyyy-MM-dd",
????????????????"time_zone":"+08:00",
????????????????"interval": "day",
????????????????"min_doc_count": 0, //默認(rèn)沒有數(shù)據(jù)時的填充值
????????????????"extended_bounds":{"min":1564588800000, "max":1565679600000} //填充的時間范圍,毫秒
????????????}
????????}
????}
5、對聚合結(jié)果過濾(類似sql中的Having,例如統(tǒng)計出現(xiàn)頻率超過3次的label)
????"aggs": {
????????"agg_result": {
????????????"terms": {
????????????????"size": 1000,
????????????????"field": "label"
????????????},
????????????"aggs": {
????????????????"agg_having": {
????????????????????"bucket_selector": {
????????????????????????"buckets_path": {
????????????????????????????"agg_bucket_count" : "_count"
????????????????????????},
????????????????????????"script": "params.agg_bucket_count > 3"
????????????????????}
????????????????}
????????????}
????????}
????}
6、對Nested 嵌套對象聚合
????"aggs": {
????????"agg_result": {
????????????"nested": {
????????????????"path": "comments"
????????????},
????????????"aggs": {
????????????????"sub_agg_result": {
????????????????????"terms": {
????????????????????????"field": "comments.title"
????????????????????}
????????????????}
????????????}
????????}
????}