Ich hatte das gleiche Problem, und die Art, wie ich es gelöst habe, war eine Sub-Aggregation auf dem Docs-Score einzuführen. Dann ordnete ich in meiner äußeren Aggregation die max_score Aggregation an.
GET /my-index/my-type/_search
{
"query": {
"bool" : {
"should" : [ {
"match" : {
"searchTerm" : {
"query" : "style",
"type" : "boolean"
}
}
},
{
"flt_field" : {
"searchTerm" : {
"like_text" : "style"
}
}
}]
}
},
"aggs": {
"group_by_target_url": {
"terms": {
"field": "targetUrl",
"order": {
"max_score": "desc"
}
},
"aggs": {
"max_score": {
"max": {
"script": "doc.score"
}
}
}
}
}
}
Ich folgte den Anweisungen auf diesen Link:
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html
Wenn Ihre Dokumente haben, passieren ein „Score“ -Feld und Sie wollen eine Metriken Aggregation wie „max“ mit der Partitur arbeiten berechnet von elasticsearch und nicht vom Dokument definierten, sollte das Skript in der Aggregation "_score" sein, nicht "doc.score". – Shadocko
@Shadocko ja! das ist ziemlich irreführend. Danke für den Kommentar. Ich probiere das gleiche Beispiel aus und jetzt funktioniert es. – Darby
Wissen Sie, wie Sie es mit Partitionen lösen können? Meine Frage ist hier https://stackoverflow.com/questions/46484351/elasticsearch-aggregation-order-by-top-hit-score-with-partitions – KingWu