【发布时间】:2020-06-26 20:17:15
【问题描述】:
考虑以下文档在我的弹性搜索中。我想根据排名对文档进行分组,但是必须单独显示任何低于 1000 的排名,并且必须对高于 1000 的任何排名进行分组我如何使用复合聚合来实现这一点,我是新手,我正在使用复合,因为我想使用 after允许分页的关键功能。
Documents
{
rank : 200,
name:abcd,
score1 :100,
score2:200
},
{
rank 300,
name:abcd,
score1:100,
score2:200
}
Expected Result:
{
key:{
rank:101
},
doc_count:1,
_score1: {value:3123}
_score2 : {value :3323}
}
{
key:{
rank:1000-*
},
doc_count:1,
_score1: {value:3123}
_score2 : {value :3323}
},
{
key:{
rank:300
},
doc_count:1,
_score1: {value:3123}
_score2 : {value :3323}
}
######## QUery that I tried
{
"query":{"match_all":{}},
"aggs":{
"_scores":{
"composite"{
"sources":[
{"_rank":{"terms":{"field":"rank"}}}
]
}
},
"aggs":{
"_ranks":{
"field":"rank:[
{"to":1000},
{"from":1000}
]
}
"_score1": {"sum": {"field": "score1"}}
"_score2": {"sum": {"field": "score2"}}
}
}
}
【问题讨论】:
标签: python json elasticsearch nosql