【发布时间】:2019-03-01 19:37:43
【问题描述】:
我的索引文档如下:
{
"user": {
"email": "test@test.com",
"firstName": "test",
"lastName": "test"
},
...
"category": "test_category"
}
目前我有一个聚合,它通过用户的电子邮件来计算文档,然后是一个子聚合来计算每个用户的类别:
"aggs": {
"users": {
"terms": {
"field": "user.email",
"order": {
"_count": "desc"
}
},
"aggs": {
"categories": {
"terms": {
"field": "category",
"order": {
"_count": "desc"
}
}
}
}
}
}
我正在尝试将用户的名字和姓氏包含到由顶级聚合生成的存储桶中,同时仍然从类别子聚合中获得相同的结果。我已经尝试包含 top_hits 聚合,但我没有任何运气得到我想要的结果。
有什么建议吗?谢谢!
编辑:
让我换个说法。实际上,我确实通过 top_hits 聚合获得了用户数据方面的预期结果,我只是不知道如何正确地将其包含在我的原始聚合中,以便 categories 子聚合仍然给我相同的结果。我尝试了以下top_hits 聚合:
"aggs": {
"user": {
"top_hits": {
"size": 1,
"_source": {
"include": ["user"]
}
}
}
}
我希望将用户数据放在顶级 agg 存储桶中,然后仍然在其下方按类别进行聚合。
【问题讨论】:
-
你能贴出你试过的top_hist吗?你用过:_source: {include: ['users']} ?
-
编辑了我的帖子。
-
试试这个: aggs: { users: { terms: {field: 'user.email'}, aggs: { user: { top_hits: { _source: {include: ['user' ],大小 = 1 } } } } }
标签: elasticsearch elasticsearch-aggregation