Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Руководство [8.17] ›REST API ›API агрегаций

API получения задач агрегации

Устарело в версии 8.11.0.

Функциональность агрегаций будет удалена в будущей версии. Используйте downsampling вместо этого.

Новая справка по API

Для получения самых актуальных данных по API обратитесь к API агрегаций.

Получает конфигурацию, статистику и состояние задач агрегации.

Запрос

GET _rollup/job/<job_id>

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

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

Описание

API может возвращать данные для одной задачи агрегации или для всех задач агрегации.

Этот API возвращает только активные (как STARTED, так и STOPPED) задачи. Если задача была создана, работала некоторое время, а затем удалена, этот API не вернёт никаких данных об этой задаче.

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

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

<job_id>
(Необязательно, строка) Идентификатор задачи агрегации. Если он _all или опущен, API возвращает все задачи агрегации.

Тело ответа

jobs

(массив) Массив ресурсов задач агрегации.

Свойства ресурсов задач агрегации
config
(объект) Содержит конфигурацию для задачи агрегации. Эта информация идентична конфигурации, которая была предоставлена при создании задачи через API создания задачи.
stats
(объект) Содержит временную статистику о задаче агрегации, например, количество обработанных документов и количество документов сводной агрегации, проиндексированных. Эта статистика не сохраняется. Если узел перезапускается, эта статистика сбрасывается.
status

(объект) Содержит текущий статус индексатора для задачи агрегации. Возможные значения и их значения:

  • stopped означает, что индексатор приостановлен и не будет обрабатывать данные, даже если его интервал cron сработает.
  • started означает, что индексатор запущен, но не активно индексирует данные. Когда сработает интервал cron, индексатор задачи начнёт обрабатывать данные.
  • indexing означает, что индексатор активно обрабатывает данные и создаёт новые документы сводной агрегации. В этом состоянии любые последующие срабатывания интервала cron будут проигнорированы, так как задача уже активна с предыдущим триггером.
  • abort является временным состоянием, которое обычно не наблюдается пользователем. Оно используется, если задача должна быть остановлена по какой-либо причине (задача удалена, возникла неисправимая ошибка и т. д.). Вскоре после того, как будет установлено состояние abort, задача удалит себя из кластера.

Примеры

Если мы уже создали задачу агрегации с именем sensor, подробности о задаче можно получить с помощью:

resp = client.rollup.get_jobs(
    id="sensor",
)
print(resp)
response = client.rollup.get_jobs(
  id: 'sensor'
)
puts response
const response = await client.rollup.getJobs({
  id: "sensor",
});
console.log(response);
GET _rollup/job/sensor

API возвращает следующий ответ:

{
  "jobs": [
    {
      "config": {
        "id": "sensor",
        "index_pattern": "sensor-*",
        "rollup_index": "sensor_rollup",
        "cron": "*/30 * * * * ?",
        "groups": {
          "date_histogram": {
            "fixed_interval": "1h",
            "delay": "7d",
            "field": "timestamp",
            "time_zone": "UTC"
          },
          "terms": {
            "fields": [
              "node"
            ]
          }
        },
        "metrics": [
          {
            "field": "temperature",
            "metrics": [
              "min",
              "max",
              "sum"
            ]
          },
          {
            "field": "voltage",
            "metrics": [
              "avg"
            ]
          }
        ],
        "timeout": "20s",
        "page_size": 1000
      },
      "status": {
        "job_state": "stopped"
      },
      "stats": {
        "pages_processed": 0,
        "documents_processed": 0,
        "rollups_indexed": 0,
        "trigger_count": 0,
        "index_failures": 0,
        "index_time_in_ms": 0,
        "index_total": 0,
        "search_failures": 0,
        "search_time_in_ms": 0,
        "search_total": 0,
        "processing_time_in_ms": 0,
        "processing_total": 0
      }
    }
  ]
}

Массив jobs содержит одну задачу (id: sensor), так как мы запросили одну задачу в URL конечной точки. Если мы добавим ещё одну задачу, мы сможем увидеть, как обрабатываются ответы с несколькими задачами:

resp = client.rollup.put_job(
    id="sensor2",
    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"
            ]
        }
    ],
)
print(resp)

resp1 = client.rollup.get_jobs(
    id="_all",
)
print(resp1)
const response = await client.rollup.putJob({
  id: "sensor2",
  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"],
    },
  ],
});
console.log(response);

const response1 = await client.rollup.getJobs({
  id: "_all",
});
console.log(response1);
PUT _rollup/job/sensor2 
{
  "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" ]
    }
  ]
}

GET _rollup/job/_all 

Мы создаём вторую задачу с именем sensor2

Затем запрашиваем все задачи, используя _all в API GetJobs

Что даст следующий ответ:

{
  "jobs": [
    {
      "config": {
        "id": "sensor2",
        "index_pattern": "sensor-*",
        "rollup_index": "sensor_rollup",
        "cron": "*/30 * * * * ?",
        "groups": {
          "date_histogram": {
            "fixed_interval": "1h",
            "delay": "7d",
            "field": "timestamp",
            "time_zone": "UTC"
          },
          "terms": {
            "fields": [
              "node"
            ]
          }
        },
        "metrics": [
          {
            "field": "temperature",
            "metrics": [
              "min",
              "max",
              "sum"
            ]
          },
          {
            "field": "voltage",
            "metrics": [
              "avg"
            ]
          }
        ],
        "timeout": "20s",
        "page_size": 1000
      },
      "status": {
        "job_state": "stopped"
      },
      "stats": {
        "pages_processed": 0,
        "documents_processed": 0,
        "rollups_indexed": 0,
        "trigger_count": 0,
        "index_failures": 0,
        "index_time_in_ms": 0,
        "index_total": 0,
        "search_failures": 0,
        "search_time_in_ms": 0,
        "search_total": 0,
        "processing_time_in_ms": 0,
        "processing_total": 0
      }
    },
    {
      "config": {
        "id": "sensor",
        "index_pattern": "sensor-*",
        "rollup_index": "sensor_rollup",
        "cron": "*/30 * * * * ?",
        "groups": {
          "date_histogram": {
            "fixed_interval": "1h",
            "delay": "7d",
            "field": "timestamp",
            "time_zone": "UTC"
          },
          "terms": {
            "fields": [
              "node"
            ]
          }
        },
        "metrics": [
          {
            "field": "temperature",
            "metrics": [
              "min",
              "max",
              "sum"
            ]
          },
          {
            "field": "voltage",
            "metrics": [
              "avg"
            ]
          }
        ],
        "timeout": "20s",
        "page_size": 1000
      },
      "status": {
        "job_state": "stopped"
      },
      "stats": {
        "pages_processed": 0,
        "documents_processed": 0,
        "rollups_indexed": 0,
        "trigger_count": 0,
        "index_failures": 0,
        "index_time_in_ms": 0,
        "index_total": 0,
        "search_failures": 0,
        "search_time_in_ms": 0,
        "search_total": 0,
        "processing_time_in_ms": 0,
        "processing_total": 0
      }
    }
  ]
}

© 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/8.17/rollup-get-job.html

Spec-Zone.ru

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