Как сделать гистограмму даты снова после агрегирования гистограммы даты? - PullRequest
0 голосов
/ 02 апреля 2020

Теперь моя агрегация равна 5-минутной агрегации гистограммы даты, а затем суммируется результат каждые 5 минут.

Теперь мой DSL похож на:

{
  "size": 0,
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "time": {
              "gt": "2020-03-31 11:30:00",
              "lt": "2020-03-31 13:00:00"
            }
          }
        },
        {
          "term": {
            "domain": "s3plus-shon.meituan.net"
          }
        }
      ]
    }
  },
  "aggs": {
    "flux_stats": {
      "date_histogram": {
        "field": "time",
        "interval": "5m",
        "format": "yyyy-MM-dd HH:mm:ss"
      },
      "aggs": {
        "flux": {
          "sum": {
            "field": "visit_flux"
          }
        }
      }
    }
  }
}

Но я хочу сделать дату Снова агрегация гистограммы по результату, этот интервал составляет 30 минут, и нужно находить максимальное значение каждые 30 минут, как я могу это сделать?

1 Ответ

1 голос
/ 02 апреля 2020

Вы можете сделать это следующим образом: сначала набрав 30-метровые интервалы и получив максимум для каждого 30-минутного периода, а затем используя 5-минутные интервалы с суммами за 5-минутные периоды.

{
  "size": 0,
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "time": {
              "gt": "2020-03-31 11:30:00",
              "lt": "2020-03-31 13:00:00"
            }
          }
        },
        {
          "term": {
            "domain": "s3plus-shon.meituan.net"
          }
        }
      ]
    }
  },
  "aggs": {
    "flux_stats": {
      "date_histogram": {
        "field": "time",
        "interval": "30m",
        "format": "yyyy-MM-dd HH:mm:ss"
      },
      "aggs": {
        "flux": {
          "max": {
            "field": "visit_flux"
          }
        },
        "flux_stats": {
          "date_histogram": {
            "field": "time",
            "interval": "5m",
            "format": "yyyy-MM-dd HH:mm:ss"
          },
          "aggs": {
            "flux": {
              "sum": {
                "field": "visit_flux"
              }
            }
          }
        }
      }
    }
  }
}
...