Делая гистограмму на вложенном поле, как получить последнее значение? - PullRequest
0 голосов
/ 02 октября 2019

Это связано с моим предыдущим вопросом:

Как выполнить агрегирование `sum` и` avg`, даже если сопоставления поля относятся к типам `text` и` keyword`?

Процесс

В настоящее время я формулирую запрос Elasticsearch, который получит все мои документы, основанные на диапазоне КАЖДЫЙ ДЕНЬ , но поле, над которым я работаю, nested. Поэтому визуализируйте это так, как будто я подсчитываю общее количество документов КАЖДЫЙ ДЕНЬ согласно моему диапазону

Воспроизведение сценария

Диапазон дат: 15 сентября - 17 сентября

15 сентября: найдено 1000 документов
16 сентября: найдено 500 документов
17 сентября: найдено 1500 документов

Вот мой пример запроса:

'aggs' => [
    'ENGAGEMENT' => [
        'nested' => [
            'path' => "eng"
        ],
        'aggs' => [
            'ARTICLES' => [
                //Use Histogram because the pub_date is of
                //long data type
                //Use interval 86400 to represent 1 day
                'histogram' => [
                    'field'  => "eng.date_updated",
                    "interval" => "86400",
                ]
            ]
        ]
    ]
]

Вот пример документа Elasticsearch, который у меня есть:

enter image description here

С данным сценарием и примером выше, текущий запрос отображает этот вывод

enter image description here

Моя главная цель
С изложенными идеями, как я могу извлечь последний объект вложенногополе для каждого дня?

Например:

Для 15 сентября я хочу получить LAST soc_like_count для этого дня
Для 16 сентября я также хочуполучить LAST soc_like_count за этот день и т. д. ...

ПРОБНЫЕ РЕШЕНИЯ

Пытался провести эксперименты с inner_hits, но после прочтения некоторое время inner_hits доступен только в части body запроса ES

Есть ли способ выполнить это с запросомasticsearch?

1 Ответ

1 голос
/ 02 октября 2019

Использование Top_hits субагрегация

  "aggs": {
    "date": {
      "date_histogram": {
        "field": "eng.date_updated",
        "interval": "month"
      },
      "aggs": {
        "top_hits": {    ---> added as sub aggregation to date_histogram
          "top_hits": {
            "sort": [
                        {
                        "date": {   ---> replace by field name you want to sort
                                    "order": "desc"
                              }
                      }
             ],
            "size": 1
          }
        }
      }
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...