Я действительно нашел решение после небольшого поиска ... Я использую обычный запрос, чтобы получить все фильмы, и вложенную агрегацию, чтобы получить последний просмотренный фильм. Окончательный запрос выглядит так:
GET movies/_search
{
"aggs": {
"watched_movies": {
"filter": {
"term": {
"watched": true
}
},
"aggs": {
"latest": {
"top_hits": {
"size": 1,
"sort": [{
"lastWatchAt": {
"order": "desc"
}
}]
}
}
}
}
},
"query": {
"function_score": {
"boost_mode": "sum",
"score_mode": "multiply",
"query": {
"match_all": {}
},
"functions": [
{
"gauss": {
"releasedYear": {
"offset": "90d",
"origin": "now",
"scale": "365d"
}
}
}
]
}
},
"sort": [
{
"releasedYear": {
"order": "desc"
}
}
]
}