弹性搜索版本:6.2.4
我现在通过以下方式获得了复合聚合的结果:
GET index/_search
{
"aggs": {
"my_buckets": {
"composite": {
"sources": [
{
"name": {
"terms": {
"field": "name.keyword"
}
}
}
]
}
}
},
"query":{
}
}
Run Code Online (Sandbox Code Playgroud)
为简化问题,此处省略查询部分。
我可以得到如下结果:
"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
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
我注意到搜索结果的顺序不是按查询字符串的来源(相似性)排序的。
我们如何实现按分数对复合聚合结果进行排序?
谢谢。
小智 8
我发现的唯一选择是使用管道 bucket_sort 聚合,使用读取分数的最大度量聚合中的值
{
"aggs": {
"myBuckets": {
"composite": {
"sources": []
},
"aggs": {
"mySort": {
"bucket_sort": {
"sort": [
{
"max_score": {
"order": "desc"
}
}
]
}
},
"max_score": {
"max": {
"script": "_score"
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1975 次 |
| 最近记录: |