關於elasticsearch 聚合那點事1

1,根據某個字段聚合

如下是根據 city 字段聚合,然後按照文檔的數量從大到小排序,返回5條數據。

{
  “query”: {
    "bool": {
       "filter": {
       		.......query-dsl...... 
         }
      }
  }, 
  "aggs": {"types_count": {"term": {"field": "city", "size": 5, "ordre": {"doc_count": "desc"}}}}
}

2, 分組求和: select field1, field2,sum(*) from dd group by field1

{
  "query": {
   ......query-dsl...... 
   },
   "aggs": {
        "aggs-name": {
			"terms": {
				"field": "city", 
				"size": 100,
				"order": "totalNum"
			},
			"aggs": {
				"totalNum": {"sum": {"field": "product_num"}}
			}
		}
    }
}

3,關於嵌套對象聚合分組求和的查詢。

{
	"query":{
	......query-dsl......
	},
	"aggs": {
		"aggs-name": {
			"nested": {
				"path": "provice_nested"
			},
			"aggs": {
				"aggs-name": {
					"terms": {
						"field": "city",
						"size": 100,
						"order": {"total_num": "desc"}
					},
					"aggs": {
						"total_num": {"sum":{"field": "product_num"}}
					}
				}
			}
		}
	}
}

4, 關於多個字段的,腳本查詢,按照多個字段組合分組,並排多個聚合。

{
	"query": {
	......query-dsl......
  	},
  	"aggs": {
		"aggs-name": {
			"terms": {
				"script": {
					"lang": "painless",
					"source": "doc['provice'].value" + '-split-' + "doc['city'].value"
				},
				"size": 500
			},
			"aggs":{
				"aggs-name1": {
				    "top_hits": {
						"_source": ["field1", "field2", ]
						"size": 1,
						"sort": {"timestamp": "desc"}
					}
				},
				"aggs-name2": {
					"terms": {
						"script": {
							"lang": "painless",
							"source": "doc['category'].value" + '-split-' + "doc['brand'].value"
						},
						"size": 10
					}
				}
			}
		}
	}
}

5, 關於多個字段的,腳本查詢,按照多個字段組合分組,並排多個聚合,並且求和。【包含嵌套對象】

{
	"query": {
	......query-dsl......
  	},
  	"aggs": {
		"aggs-name": {
			"terms": {
				"script": {
					"lang": "painless",
					"source": "doc['provice'].value" + '-split-' + "doc['city'].value"
				},
				"size": 500
			},
			"aggs":{
			    "aggs-name0-total-num": {
					"sum": {"field": "product-num"}
				}
				"aggs-name1": {
				    "top_hits": {
						"_source": ["field1", "field2", ]
						"size": 1,
						"sort": {"timestamp": "desc"}
					}
				},
				"aggs-name2": {
					"terms": {
						"script": {
							"lang": "painless",
							"source": "doc['category'].value" + '-split-' + "doc['brand'].value"
						},
						"size": 10
					}
				},
				"aggs-name3": {
					"nested": {
						"path": "province"
					},
					"aggs": {
						"nested-agg-name": {
							"terms": {
								"script": {
									"lang": "painless",
									"source": "doc['category'].value" + '-split-' + "doc['brand'].value"
								},
								"size": 10
							},
							"aggs": {"total_price": {"sum": {"field": "province.price"}}}
						}
					}
                }
			}
		}
	}
}

6, 關於terms 的include

{
	"size": 0,
	"query":{...},
	"aggs": {
		"type_count": {
            "terms": {
                "field": "brand",
                "include": [
					"nike", "qiaodan", "addas"
				]
             }
         }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章