es统计有多少个分组_ElasticSearch按多个字段分组

我发现的唯一接近的事情是:Elasticsearch中的多个分组方式

基本上,我试图获得与以下MySql查询等效的ES :

select gender, age_range, count(distinct profile_id) as count

FROM TABLE group by age_range, gender

年龄和性别本身很容易获得:

{

"query": {

"match_all": {}

},

"facets": {

"ages": {

"terms": {

"field": "age_range",

"size": 20

}

},

"gender_by_age": {

"terms": {

"fields": [

"age_range",

"gender"

]

}

}

},

"size": 0

}

这使:

{

"ages": {

"_type": "terms",

"missing": 0,

"total": 193961,

"other": 0,

"terms": [

{

"term": 0,

"count": 162643

},

{

"term": 3,

"count": 10683

},

{

"term": 4,

"count": 8931

},

{

"term": 5,

"count": 4690

},

{

"term": 6,

"count": 3647

},

{

"term": 2,

"count": 3247

},

{

"term": 1,

"count": 120

}

]

},

"total_gender": {

"_type": "terms",

"missing": 0,

"total": 193961,

"other": 0,

"terms": [

{

"term": 1,

"count": 94799

},

{

"term": 2,

"count": 62645

},

{

"term": 0,

"count": 36517

}

]

}

}

但是现在我需要这样的东西:

[breakdown_gender] => Array

(

[1] => Array

(

[0] => 264

[1] => 1

[2] => 6

[3] => 67

[4] => 72

[5] => 40

[6] => 23

)

[2] => Array

(

[0] => 153

[2] => 2

[3] => 21

[4] => 35

[5] => 22

[6] => 11

)

)

请注意,这0,1,2,3,4,5,6是针对年龄范围的“映射”,因此它们实际上表示的是:)而不是数字。例如,性别[1](“男性”)细分为[246]的年龄范围[0](“18岁以下”)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值