Elasticsearch版本:6.2.4
我现在通过以下方式获得了复合聚合的结果:
GET index/_search
{
"aggs": {
"my_buckets": {
"composite": {
"sources": [
{
"name": {
"terms": {
"field": "name.keyword"
}
}
}
]
}
}
},
"query":{
}
}
为简化问题,此处省略了查询部分。
我可以得到如下结果:
"aggregations": {
"my_buckets": {
"buckets": [
{
"key": {
"name": "Bill Gates"
},
"doc_count": 1
},
{
"key": {
"name": "Steven Paul Jobs"
},
"doc_count": 1
},
{
"key": {
"name": "Gates Godar"
},
"doc_count": 1
}
]
}
}
我注意到,搜索结果的顺序未按查询字符串的来源(相似性)排序。
如何实现按分数对综合汇总结果进行排序?
谢谢。
答案 0 :(得分:0)
我发现的唯一选择是使用管道bucket_sort聚合,该聚合使用读取得分的最大度量聚合中的值
{
"aggs": {
"myBuckets": {
"composite": {
"sources": []
},
"aggs": {
"mySort": {
"bucket_sort": {
"sort": [
{
"max_score": {
"order": "desc"
}
}
]
}
},
"max_score": {
"max": {
"script": "_score"
}
}
}
}
}
}