elasticsearch 多字段聚合求助

2020-06-04 14:11:30 +08:00
 rqxiao

类似 select couponTypeId,counterCode,count(*) from table group by couponTypeId,counterCode

下面是是单条件聚合

POST coupon_statistics_record/_search

   {
	"aggs": {
		"group_by_couponTypeId": {
 			"terms": {"field": "couponTypeId.keyword"}
		}
	}
   }
3068 次点击
所在节点    Elasticsearch
7 条回复
helloZwq
2020-06-04 14:20:29 +08:00
aggs 下面再写一个 agg 就好了
rqxiao
2020-06-04 15:08:07 +08:00
@helloZwq 试了下可以的
POST coupon_statistics_record/_search
{
"aggs": {
"group_by_couponTypeId": {
"terms": {
"field": "couponTypeId.keyword"
}
},
"group_by_counterCode": {
"terms": {
"field": "counterCode.keyword"
}
}
}
}
rqxiao
2020-06-04 15:09:44 +08:00
@helloZwq 还想请问下 把第二个聚合的字段改成了时间,想用时间( yyyy--MM )来分组,这个 "format": "yyyy-MM"没有生效的样子

POST coupon_statistics_record/_search
{
"aggs": {
"group_by_couponTypeId": {
"terms": {
"field": "couponTypeId.keyword"
},
"aggs": {
"group_by_creatime": {
"terms": {
"field": "createTime",
"format": "yyyy-MM"
}
}
}
}
}
}
rqxiao
2020-06-04 15:40:41 +08:00
聚合的时候就让 同一个月的在一组不知道这样可以不可以呢
wangyanrui
2020-06-04 16:47:39 +08:00
subAgg 不能解决吗? 还是我太菜了没有读懂楼主的问题!
helloZwq
2020-06-04 17:42:19 +08:00
按月划分的话有直接的 api
"aggs": {
"NAME": {
"date_histogram": {
"field": "date",
"interval": "month"
}
}
}
rqxiao
2020-06-05 18:00:57 +08:00
@helloZwq 不好意思,还想请教下 如果是对日期类型进行 月份级别的统计这样写

"range" : {
"createTime" : {
"gte": "2020-05",
"lte": "2020-05",
"format" : "yyyy-MM"
}
}

会默认为 2020-05-01 00:00:00 2020-05-01 23:59:59 来统计是吗

要通过日统计这样才能完成月份级别的统计吗
"range" : {
"createTime": {
"gte": "2020-05-01",
"lte": "2020-05-31",
"format":"yyyy-MM-dd"
}
}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/678575

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX