获取汇总作业 API编辑

已在 8.11.0 中弃用。

汇总将在未来版本中移除。请改用降采样

检索汇总作业的配置、统计信息和状态。

请求编辑

GET _rollup/job/<job_id>

先决条件编辑

  • 如果启用了 Elasticsearch 安全功能,则您必须具有 monitormonitor_rollupmanagemanage_rollup 集群权限才能使用此 API。有关更多信息,请参阅安全权限

描述编辑

该 API 可以返回单个汇总作业或所有汇总作业的详细信息。

此 API 仅返回活动的(STARTEDSTOPPED)作业。如果创建了一个作业,运行了一段时间后被删除,则此 API 不会返回有关该作业的任何详细信息。

有关历史汇总作业的详细信息,汇总功能 API 可能更有用。

路径参数编辑

<job_id>
(可选,字符串)汇总作业的标识符。如果它是 _all 或省略,则 API 将返回所有汇总作业。

响应正文编辑

jobs

(数组)汇总作业资源数组。

汇总作业资源的属性
config
(对象)包含汇总作业的配置。此信息与通过创建作业 API创建作业时提供的配置相同。
stats
(对象)包含有关汇总作业的瞬态统计信息,例如已处理的文档数和已索引的汇总摘要文档数。这些统计信息不会持久化。如果节点重新启动,则这些统计信息将重置。
status

(对象)包含汇总作业的索引器的当前状态。可能的值及其含义为

  • stopped 表示索引器已暂停,即使其 cron 间隔触发,也不会处理数据。
  • started 表示索引器正在运行,但未主动索引数据。当 cron 间隔触发时,作业的索引器将开始处理数据。
  • indexing 表示索引器正在主动处理数据并创建新的汇总文档。处于此状态时,任何后续的 cron 间隔触发都将被忽略,因为作业已由先前的触发器激活。
  • abort 是一个瞬态状态,用户通常不会看到。如果由于某种原因需要关闭任务(作业已删除、遇到不可恢复的错误等),则使用它。在设置 abort 状态后不久,作业将从集群中删除自身。

示例编辑

如果我们已经创建了一个名为 sensor 的汇总作业,则可以使用以下命令检索有关该作业的详细信息

response = client.rollup.get_jobs(
  id: 'sensor'
)
puts 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 中请求了一个作业。如果我们添加另一个作业,我们可以看到如何处理多作业响应

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 的作业

然后使用 GetJobs API 中的 _all 请求所有作业

这将产生以下响应

{
  "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
      }
    }
  ]
}