У меня есть текущий набор данных

Так что я пишу запрос, в котором я ставлю поиск терминов на Code = 110. Мне нужно, чтобыдедупликация на основе телефона, упорядоченного по рангу.В SQL будет cte с row_number() over (partition by Phone order by Rank) as Dedup
, тогда получит все записи where Dedup = 1
.Результат должен выглядеть следующим образом:

Теперь я попытался написать эластичный запрос с агрегацией фильтров, но мне нужно указать термин фильтра,в моем запросе телефон:
"aggs" : {
"phoneDedup" : {
"filter" : { "term": { "phone": "????" } },
"aggs" : {
"min_rank" : { "min" : { "field" : "rank" } }
}
}
}
Мне нужно иметь возможность извлечь данные, разбитые на страницы.Полный набор данных имеет 7-8 млн строк.То, что мне нужно, переведено в этот SQL-запрос
with cte as (
select
Row_Nr,Code,Phone,Rank
,row_number() over (partition by Phone order by Rank) as row
from TABLE_INDEX where Code='110'
)
select * from cte where row =1
Есть идеи?