Гистограмма даты Elasticsearch: убедитесь, что последний интервал является полным интервалом

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

Например, это

{
  "size": 0,
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "date": {
              "format": "yyyy-MM-dd-HH-mm-ss",
              "gte": "2017-09-04-00-00-00",
              "lte": "2017-10-04-23-59-59"
            }
          }
        }
      ]
    }
  },
  "aggregations": {
    "time_agg": {
      "date_histogram": {
        "field": "date",
        "interval": "week",
        "min_doc_count": 0,
        "extended_bounds": {
          "min": "2017-09-04",
          "max": "2017-10-04"
        }
      }
    }
  }
}

Возвращает эти сегменты:

      "buckets": [
    {
      "key_as_string": "2017-09-04T00:00:00.000Z",
      "key": 1504483200000,
      "doc_count": 11453
    },
    {
      "key_as_string": "2017-09-11T00:00:00.000Z",
      "key": 1505088000000,
      "doc_count": 14083
    },
    {
      "key_as_string": "2017-09-18T00:00:00.000Z",
      "key": 1505692800000,
      "doc_count": 14526
    },
    {
      "key_as_string": "2017-09-25T00:00:00.000Z",
      "key": 1506297600000,
      "doc_count": 14904
    },
    {
      "key_as_string": "2017-10-02T00:00:00.000Z",
      "key": 1506902400000,
      "doc_count": 1447
    }
  ]

Последнее возвращенное ведро не является полным интервалом недели. Он начинается 2 октября и продолжается до 4 октября.

Я хотел бы, чтобы возвращенные ведра были:

      "buckets": [
    {
      "key_as_string": "2017-09-04T00:00:00.000Z",
      "key": ???,
      "doc_count": ???
    },
    {
      "key_as_string": "2017-09-06T00:00:00.000Z",
      "key": 1505088000000,
      "doc_count": ???
    },
    {
      "key_as_string": "2017-09-13T00:00:00.000Z",
      "key": ???,
      "doc_count": ???
    },
    {
      "key_as_string": "2017-09-20T00:00:00.000Z",
      "key": ???,
      "doc_count": ???
    },
    {
      "key_as_string": "2017-10-27T00:00:00.000Z",
      "key": ???,
      "doc_count": ???
    }
  ]

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

0 ответов

Другие вопросы по тегам