Один запрос для поиска документа с наибольшим значением для некоторого поля

У меня есть коллекция документов с уникальными идентификаторами числового запуска, и я хочу найти документ с наивысшим идентификатором запуска.

Я могу выполнить эти два запроса.

Во-первых, я могу найти наивысший идентификатор запуска:

{
    "size": 0,
    "aggregations": {
      "latest_run_id": {
        "aggregations": {
          "latest_run_id": {
            "max": {"field": "run_id"}
          }
        }
      }
    }
}

Во-вторых, я могу найти документ с этим идентификатором запуска:

{
    "filter": {
        {"term": {"run_id": latest_run_id}}
    }
}

Есть ли способ сделать это с помощью одного запроса?

Ответ 1

Вы можете выполнить это, объединив "сортировку" и "размер":

`{
  "filter" : {
    "match_all" : { }
  },
  "sort": [
    {
      "run_id": {
        "order": "desc"
      }
    }
  ],
  "size": 1
}`

Это вернет запись с наивысшим run_id