Python 使用聚合中的最佳_分数对弹性搜索结果进行排序
我正在尝试做一个汇总,然后在top中对得分最高的结果进行排序。虽然聚合是成功的,但它的分数没有排序。如何使之成为可能Python 使用聚合中的最佳_分数对弹性搜索结果进行排序,python,
elasticsearch,Python,
elasticsearch,我正在尝试做一个汇总,然后在top中对得分最高的结果进行排序。虽然聚合是成功的,但它的分数没有排序。如何使之成为可能 "aggs": { "group": { "terms": { "field": "description.keyword", "order": { "description_score":
"aggs": {
"group": {
"terms": {
"field": "description.keyword",
"order": {
"description_score": "desc"
}
},
"aggs": {
"group_docs": {
"top_hits": {
"size": 1
}
}
}
},
}
由于@Lupanoide提到的分数不是在聚合中计算的,所以您无法根据文档分数对存储桶进行排序。相反,可以使用 允许根据字段值折叠搜索结果。这个 折叠是通过仅选择排序靠前的文档来完成的 折叠键
默认情况下,搜索结果按“分数”排序,因此您无需添加“排序”,因为@Lupanoide提到的分数不是在聚合中计算的,因此您无法根据文档分数对存储桶进行排序。相反,可以使用 允许根据字段值折叠搜索结果。这个 折叠是通过仅选择排序靠前的文档来完成的 折叠键
默认情况下,搜索结果按“分数”排序,因此您不需要添加“排序”@Lupanoide您可以共享您的视图吗?正如刚才所说,这是不可能的,因为术语聚合不会返回任何分数。它是SQL中的一种groupBy。它将某个字段的所有值分组,没有分数。你需要改变策略。请更好地解释你的目标是什么。你需要得到什么分数?根据哪些标准?@Lupanoide您可以分享您的观点吗?正如刚才所说,这是不可能的,因为术语聚合不会返回任何分数。它是SQL中的一种groupBy。它将某个字段的所有值分组,没有分数。你需要改变策略。请更好地解释你的目标是什么。你需要得到什么分数?根据哪些标准?
{
"query": {
"match_all": {}
},
"collapse": { --> group by on given field
"field": "sources.keyword"
}
}