Chcę zamówić łyżki według doc.score top_hit. Moja obecna implementacja znajduje się poniżej.Elasticsearch porządek agregacji według najwyższego wyniku trafienia
group_by_iid: {
terms: {
field: 'iid',
order: { max_score: 'desc' },
size: 0
},
aggs: {
max_score: { max: { script: 'doc.score' } },
top_hit: {
top_hits: {
sort: [{ source_priority: { order: 'desc' } }],
size: 1
}
}
}
}
Jest to niepoprawne, ponieważ segmenty są sortowane według ich najwyższego wyniku, a nie według najwyższego wyniku w dokumencie source_priority. Czy istnieje sposób na rozwiązanie tego problemu?
Jeśli dokumenty zdarzy się, że jest „słabo” pola i chcesz agregacji metryk jak „max”, aby pracować z wynikiem obliczonym dzięki elastycznemu wyszukiwaniu, a nie dokumentowi, skrypt w agregacji powinien być "_score", a nie "doc.score". – Shadocko
@Shadocko yes! to dość mylące. Dziękuję za komentarz. Próbuję tego samego przykładu i teraz działa. – Darby
Czy wiesz, jak rozwiązać problem z partycjami? Moje pytanie jest tutaj https://stackoverflow.com/questions/46484351/elasticsearch-aggregation-order-by-top-hit-score-with-partitions – KingWu