Как получить максимальную запись с использованием конкретного канала _id в elasticsearch 7.5 - PullRequest
0 голосов
/ 27 мая 2020

У меня есть несколько документов в каждом идентификаторе канала, и я хочу отсортировать по убыванию в столбце просмотра по идентификатору канала.

 {
   "query":
    {
    "match":{
        "channel_id":"UCQOd1f6pYldvhgvdQ_ktpGA"
    }
  },
  "aggs":{
    "video_views":{
        "sort": {
              "views": "desc"
            },
            "_source": ["channel_id", "views"]
            }
  }
}

1 Ответ

0 голосов
/ 27 мая 2020
  1. Вы можете отсортировать 1 верхний документ по столбцу просмотров
{
  "size":1,  --> get top 1 documnet
  "query": {
    "term": {   --> term query to filter on channelId
      "channel_id.keyword": {
        "value": "UCQOd1f6pYldvhgvdQ_ktpGA"
      }
    }
  },
  "sort": [      ---> sort on views column
    {
      "views": {
        "order": "desc"
      }
    }
  ]
}
Использовать максимальное агрегирование
  {
  "query": {
    "term": {
      "channel_id.keyword": {
        "value": "UCQOd1f6pYldvhgvdQ_ktpGA"
      }
    }
  },
  "aggs": {
    "views": {
      "max": {
        "field": "views",
        "missing": 0
      }
    }
  }
}
...