Elasticsearch-terms

单层聚合

{
	"aggs": {
		"group_a": {
			"terms": {
				"field": "event_type"
			}
		}
	}
}

双层聚合

{
	"aggs": {
		"group_a": {
			"terms": {
				"field": "event_type"
			},
			"aggs": {
				"group_b": {
					"terms": {
						"field": "event_level"
					}
				}
			}
		}
	}
}
  1. 按照 tags 字段 进行分组
{
	"aggs": {
		"group_by_tag": {
			"terms": {
				"field": "tags",
			}
		}
	}
}
  1. 对名称中包含yagao的商品,计算每个tag下的商品数量
{
	"query": {
		"match": {
			"name": "yagao"
		}
	},
	"aggs": {
		"all_tags": {
			"terms": {
				"field": "tags"
			}
		}
	}
}
  1. 先分组,再算每组的平均值,计算每个tag下的商品的平均价格
{
	"aggs": {
		"group_by_tags": {
			"terms": {
				"field": "tags"
			},
			"aggs": {
				"avg_price": {
					"avg": {
						"field": "price"
					}
				}
			}
		}
	}
}
  1. 计算每个tag下的商品的平均价格,并且按照平均价格降序排序
{
	"aggs": {
		"all_tags": {
			"terms": {
				"field": "tags",
				"order": {
					"avg_price": "desc"
				}
			},
			"aggs": {
				"avg_price": {
					"avg": {
						"field": "price"
					}
				}
			}
		}
	}
}
  1. 按照指定的价格范围区间进行分组,然后在每组内再按照tag进行分组,最后再计算每组的平均价格
{
	"aggs": {
		"group_by_price": {
			"range": {
				"field": "price",
				"ranges": [{
						"from": 0,
						"to": 20
					},
					{
						"from": 20,
						"to": 40
					},
					{
						"from": 40,
						"to": 50
					}
				]
			},
			"aggs": {
				"group_by_tags": {
					"terms": {
						"field": "tags"
					},
					"aggs": {
						"average_price": {
							"avg": {
								"field": "price"
							}
						}
					}
				}
			}
		}
	}
}
posted @ 2020-07-31 10:44  你的小可爱吖  阅读(618)  评论(0编辑  收藏  举报