Elasticsearch: группировка по таймфрейму

Я сделал этот запрос, чтобы получить количество запросов, сделанных пользователем за последний месяц (или день), по сравнению с остальными пользователями.

{
"query": {
    "bool": {
        "must": [
            {
                "range": {
                    "created": {
                        "gte": 1554854400000
                    }
                }
            }
        ]
    }
},
"aggs": {
    "requests": {
        "filters": {
            "other_bucket_key": "all",
            "filters": {
                "user": {
                    "match": {
                        "user_id": "XXXXXX"
                    }
                }
            }
        }
    }
}
}

Это все запросы, сделанные за выбранный период времени.
Теперь я хочу получить количество запросов в день, сделанных пользователем за последний месяц, по сравнению с остальными пользователями.
Мне удалось получить это с помощью агрегирования гистограммы дат для общего количества сделанных запросов, но я не могу понять, как разделить это на пользователя и остальных.
Я не знаю, возможно ли это, или, может быть, есть другой способ сделать это.


person Marvin Saldinger    schedule 10.05.2019    source источник


Ответы (1)


Вы на правильном пути, вам просто нужно объединить date_histogram ежедневную агрегацию и агрегацию фильтров, которая у вас уже есть:

{
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "created": {
              "gte": 1554854400000
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "per_day": {
      "date_histogram": {
        "field": "created",
        "interval": "day"
      },
      "aggs": {
        "requests": {
          "filters": {
            "other_bucket_key": "all",
            "filters": {
              "user": {
                "match": {
                  "user_id": "XXXXXX"
                }
              }
            }
          }
        }
      }
    }
  }
}

На каждый день вы будете получать количество запросов, сделанных пользователем, по сравнению с количеством запросов для всех других пользователей.

person Val    schedule 10.05.2019