我想这个结果按top2的总和排序,不是全部,第一,按类别分组,例如:A,B,C ...,使用术语;第二,按socre排序,得到top2;第三,得到总和top2 不是全部;最后,所以是 top2 的总和
GET students/_search
{
"size": 0,
"aggs": {
"by_class": {
"terms": {
"field": "class"
},
"aggs": {
"top_scores": {
"top_hits": {
"sort": [
{
"score": {
"order": "desc"
}
}
],
"size": 2
}
},
"top_score":{
"sum": {
"field": "score"
}
}
}
}
}
}
结果================
{
"took" : 7,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 36,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
},
"aggregations" : {
"by_class" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "c",
"doc_count" : 15,
"top_sales_hits" : {
"hits" : {
"total" : {
"value" : 15,
"relation" : "eq"
},
"max_score" : null,
"hits" : [
{
"_index" : "students",
"_type" : "_doc",
"_id" : "44",
"_score" : null,
"_source" : {
"score" : 100,
"name" : "小23"
},
"sort" : [
100
]
},
{
"_index" : "students",
"_type" : "_doc",
"_id" : "39",
"_score" : null,
"_source" : {
"score" : 37,
"name" : "小7"
},
"sort" : [
37
]
}
]
}
},
"total_score" : {
"value" : 238.0 #i want top2(100+37),not all
}
},
{
"key" : "b",
"doc_count" : 13,
"top_sales_hits" : {
"hits" : {
"total" : {
"value" : 13,
"relation" : "eq"
},
"max_score" : null,
"hits" : [
{
"_index" : "students",
"_type" : "_doc",
"_id" : "24",
"_score" : null,
"_source" : {
"score" : 100,
"name" : "小23"
},
"sort" : [
100
]
},
{
"_index" : "students",
"_type" : "_doc",
"_id" : "2",
"_score" : null,
"_source" : {
"score" : 33,
"name" : "小红"
},
"sort" : [
33
]
}
]
}
},
"total_score" : {
"value" : 201.0
}
},
{
"key" : "a",
"doc_count" : 8,
"top_sales_hits" : {
"hits" : {
"total" : {
"value" : 8,
"relation" : "eq"
},
"max_score" : null,
"hits" : [
{
"_index" : "students",
"_type" : "_doc",
"_id" : "1",
"_score" : null,
"_source" : {
"score" : 23,
"name" : "小明"
},
"sort" : [
23
]
},
{
"_index" : "students",
"_type" : "_doc",
"_id" : "12",
"_score" : null,
"_source" : {
"score" : 12,
"name" : "小23"
},
"sort" : [
12
]
}
]
}
},
"total_score" : {
"value" : 82.0
}
}
]
}
}
}
像这样的结果,最后按top排序不是top2,不是我想要的,如何得到top2的总和
provider test data
POST /students/_bulk
{"index":{"_id":1}}
{"name":"小明","class":"A","score":23}
{"index":{"_id":2}}
{"name":"小红","class":"B","score":33}
{"index":{"_id":3}}
{"name":"小丽","class":"C","score":2}
{"index":{"_id":4}}
{"name":"小明a","class":"A","score":8}
{"index":{"_id":5}}
{"name":"小红a","class":"B","score":3}
{"index":{"_id":6}}
{"name":"小丽a","class":"C","score":1}
{"index":{"_id":7}}
{"name":"小丽b","class":"C","score":10}