Дата сортировки для разных значений конкретного поля в одном запросе

Допустим, у меня есть следующий контент в index.

{ date : 2019-01-21T08:20:18.962Z , student : "A", "City": "city1" }
{ date : 2019-01-21T08:20:55.962Z , student : "A", "City": "city1" }
{ date : 2019-01-21T08:29:20.962Z , student : "B", "City": "city1" }
{ date : 2019-01-21T08:20:10.962Z , student : "A", "City": "city1" }
{ date : 2019-01-21T08:29:21.962Z , student : "B", "City": "city1" }

Я хочу получить последнюю дату для ученика A и ученика B в одном запросе, чтобы получить следующий результат:

{ date : 2019-01-21T08:20:55.962Z , student : "A", "City": "city1" }
{ date : 2019-01-21T08:29:21.962Z , student : "B", "City": "city1" }

Я знаю, что с помощью сортировки по дате desc и подача заявки должна соответствовать студенту: «A» даст мне последнюю дату для студента A и, что и для студента B. Но мне нужно выполнить два отдельных запроса для этого.

Пожалуйста, дайте знать, сможем ли мы добиться этого с помощью одного запроса и как.

Спасибо .

Я пробовал сортировать с фильтром "Должен соответствовать"


person mapapi user    schedule 21.01.2019    source источник


Ответы (1)


Вы объединяете (= groupby) на студента. Ваши документы будут сгруппированы по заиканиям. Вам просто нужно сохранить нужные записи после: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html

https://www.elastic.co/guide/en/elasticsearch/reference/6.x/search-aggregations-pipeline-bucket-sort-aggregation.html

person LeBigCat    schedule 21.01.2019