Фильтровать запрос по результатам агрегации - PullRequest
0 голосов
/ 24 октября 2018

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

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

wanted result

Теперь я попытался написать эластичный запрос с агрегацией фильтров, но мне нужно указать термин фильтра,в моем запросе телефон:

"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

Есть идеи?

...