Elasticsearch: группа по срокам - PullRequest
0 голосов
/ 10 мая 2019

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

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

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

1 Ответ

0 голосов
/ 10 мая 2019

Вы на правильном пути, вам просто нужно объединить 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"
                }
              }
            }
          }
        }
      }
    }
  }
}

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

...