У меня есть документы, индексированные на Elasticsearch, похожие на эти образцы:
{'country': 'France', 'collected': '2015-03-12', 'value': 20}
{'country': 'Canada', 'collected': '2015-03-12', 'value': 21}
{'country': 'Brazil', 'collected': '2015-03-12', 'value': 33}
{'country': 'France', 'collected': '2015-02-01', 'value': 10}
{'country': 'Canada', 'collected': '2015-02-01', 'value': 11}
{'country': 'Mexico', 'collected': '2015-02-01', 'value': 9}
...
Я хочу построить запрос, который получает один результат для каждой страны, получая только те, у которых max(collected)
.
Итак, для примеров, показанных выше, результаты будут выглядеть примерно так:
{'country': 'France', 'collected': '2015-03-12', 'value': 20}
{'country': 'Canada', 'collected': '2015-03-12', 'value': 21}
{'country': 'Brazil', 'collected': '2015-03-12', 'value': 33}
{'country': 'Mexico', 'collected': '2015-02-01', 'value': 9}
Я понял, что мне нужно сделать агрегацию на country
, но я не понимаю, как ограничить результаты на max(collected)
.
Любые идеи?