我有以下文件:
POST index/type
{
"profile": {
"tracks": [
{
"title": "Track 1",
"count": 5
},
{
"title": "Track 2",
"count": 3
}
]
}
}
POST index/type
{
"profile": {
"tracks": [
{
"title": "Track 2",
"count": 8
},
{
"title": "Track 3",
"count": 1
}
]
}
}
POST index/type
{
"profile": {
"tracks": [
{
"title": "Track 4",
"count": 20
},
{
"title": "Track 5",
"count": 1
}
]
}
}
其中" count"每个曲目项中的属性是用户播放该特定曲目的次数。
我希望按照播放次数排列一个音轨列表。因此,在上面的示例中,预期结果将是:
[
{
"key": "Track 4",
"count": {
"value": 20
}
},
{
"key": "Track 2",
"count": {
"value": 11
}
},
{
"key": "Track 1",
"count": {
"value": 5
}
},
{
"key": "Track 3",
"count": {
"value": 1
}
},
{
"key": "Track 5",
"count": {
"value": 1
}
}
]
我试过了:
"aggs": {
"track_count": {
"terms": {
"field": "profile.tracks.title",
"order": {
"count": "desc"
}
},
"aggs": {
"count": {
"sum": {
"field": "profile.tracks.count"
}
}
}
}
}
但它似乎不正确,因为计数是通过对每个轨道项的所有其他计数属性求和来计算的。
我不知道如何构建我的聚合,以便通过对其他文档中相同轨道的计数属性求和来计算计数值。
任何帮助将不胜感激。谢谢。