V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rqxiao
V2EX  ›  Elasticsearch

elasticsearch 多字段聚合求助

  •  
  •   rqxiao · 2020-06-04 14:11:30 +08:00 · 3054 次点击
    这是一个创建于 1415 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    下面是是单条件聚合

    POST coupon_statistics_record/_search

       {
    	"aggs": {
    		"group_by_couponTypeId": {
     			"terms": {"field": "couponTypeId.keyword"}
    		}
    	}
       }
    
    7 条回复    2020-06-05 18:00:57 +08:00
    helloZwq
        1
    helloZwq  
       2020-06-04 14:20:29 +08:00
    aggs 下面再写一个 agg 就好了
    rqxiao
        2
    rqxiao  
    OP
       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
        3
    rqxiao  
    OP
       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
        4
    rqxiao  
    OP
       2020-06-04 15:40:41 +08:00
    聚合的时候就让 同一个月的在一组不知道这样可以不可以呢
    wangyanrui
        5
    wangyanrui  
       2020-06-04 16:47:39 +08:00
    subAgg 不能解决吗? 还是我太菜了没有读懂楼主的问题!
    helloZwq
        6
    helloZwq  
       2020-06-04 17:42:19 +08:00   ❤️ 1
    按月划分的话有直接的 api
    "aggs": {
    "NAME": {
    "date_histogram": {
    "field": "date",
    "interval": "month"
    }
    }
    }
    rqxiao
        7
    rqxiao  
    OP
       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"
    }
    }
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1677 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 16:42 · PVG 00:42 · LAX 09:42 · JFK 12:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.