Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›REST API ›Rollup API

API получения возможностей работы с агрегацией данных (rollup job)

Возвращает возможности любых задач агрегации данных (rollup jobs), которые были настроены для определённого индекса или шаблона индексов.

Данная функциональность находится в техническом предварительном режиме и может быть изменена или удалена в будущих выпусках. Elastic будет работать над исправлением любых проблем, но функции в техническом предварительном режиме не подпадают под SLA поддержки официальных функций GA.

Запрос

GET _rollup/data/<index>

Предварительные условия

  • Если в Elasticsearch включены функции безопасности, необходимо иметь monitor, monitor_rollup, manage или manage_rollup права кластера, чтобы использовать этот API. Дополнительную информацию см. в Правах доступа.

Описание

Этот API полезен, так как задача агрегации данных (rollup job) часто настраивается для агрегации только подмножества полей из исходного индекса. Кроме того, для различных полей могут быть настроены только определённые агрегации, что приводит к ограниченному подмножеству функциональности в зависимости от этой конфигурации.

Этот API позволяет вам проверить индекс и определить:

  1. Есть ли в кластере связанные данные агрегации для этого индекса?
  2. Если ответ на первый вопрос утвердительный, какие поля были агрегированы, какие агрегации могут быть выполнены и где находятся эти данные?

Параметры пути

<index>
(строка) Индекс, индексы или шаблон индексов, для которых необходимо вернуть возможности работы с агрегацией данных. _all может быть использован для получения возможностей работы со всеми задачами агрегации.

Примеры

Представьте, что у нас есть индекс под названием sensor-1, заполненный сырыми данными. Мы знаем, что данные будут расти со временем, поэтому будут sensor-2, sensor-3 и т.д. Давайте создадим задачу агрегации данных, которая будет использовать шаблон индексов sensor-*, чтобы учесть это будущее масштабирование:

PUT _rollup/job/sensor
{
  "index_pattern": "sensor-*",
  "rollup_index": "sensor_rollup",
  "cron": "*/30 * * * * ?",
  "page_size": 1000,
  "groups": {
    "date_histogram": {
      "field": "timestamp",
      "fixed_interval": "1h",
      "delay": "7d"
    },
    "terms": {
      "fields": [ "node" ]
    }
  },
  "metrics": [
    {
      "field": "temperature",
      "metrics": [ "min", "max", "sum" ]
    },
    {
      "field": "voltage",
      "metrics": [ "avg" ]
    }
  ]
}

Затем мы можем получить возможности работы с агрегацией данных для этого шаблона индексов (sensor-*) с помощью следующей команды:

GET _rollup/data/sensor-*

Что вернёт следующий ответ:

{
  "sensor-*" : {
    "rollup_jobs" : [
      {
        "job_id" : "sensor",
        "rollup_index" : "sensor_rollup",
        "index_pattern" : "sensor-*",
        "fields" : {
          "node" : [
            {
              "agg" : "terms"
            }
          ],
          "temperature" : [
            {
              "agg" : "min"
            },
            {
              "agg" : "max"
            },
            {
              "agg" : "sum"
            }
          ],
          "timestamp" : [
            {
              "agg" : "date_histogram",
              "time_zone" : "UTC",
              "fixed_interval" : "1h",
              "delay": "7d"
            }
          ],
          "voltage" : [
            {
              "agg" : "avg"
            }
          ]
        }
      }
    ]
  }
}

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

Далее показан список полей, содержащих данные, пригодные для поиска с использованием агрегации. Здесь мы видим четыре поля: node, temperature, timestamp и voltage. Каждое из этих полей перечисляет возможные агрегации. Например, для поля temperature можно использовать агрегации min, max или sum, но только агрегацию date_histogram для поля timestamp.

Обратите внимание, что элемент rollup_jobs является массивом; может быть несколько независимых задач агрегации, настроенных для одного индекса или шаблона индексов. Каждая из этих задач может иметь разные конфигурации, поэтому API возвращает список всех доступных конфигураций.

Мы также могли бы получить ту же информацию с запросом к _all:

GET _rollup/data/_all

Но обратите внимание, что если мы используем конкретное имя индекса (sensor-1), мы не получим никакой информации об агрегациях:

GET _rollup/data/sensor-1
{

}

Почему так происходит? Исходная задача агрегации была настроена для конкретного шаблона индексов (sensor-*), а не для конкретного индекса (sensor-1). Итак, хотя индекс принадлежит шаблону, задача агрегации действительна только для всего шаблона, а не только для одного из его содержащих индексов. Поэтому API получения возможностей работы с агрегацией данных возвращает информацию только на основе первоначально настроенного имени индекса или шаблона.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/rollup-get-rollup-caps.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API