获取汇总作业功能 API
编辑获取汇总作业功能 API
编辑在 8.11.0 中已弃用。
汇总将在未来版本中删除。请改用降采样。
返回已为特定索引或索引模式配置的任何汇总作业的功能。
请求
编辑GET _rollup/data/<index>
先决条件
编辑- 如果启用了 Elasticsearch 安全功能,您必须拥有
monitor
、monitor_rollup
、manage
或manage_rollup
集群权限才能使用此 API。有关更多信息,请参阅安全权限。
描述
编辑此 API 非常有用,因为通常配置汇总作业仅汇总源索引中的一部分字段。此外,只能为各种字段配置某些聚合,从而导致功能受限,具体取决于该配置。
此 API 使您可以检查索引并确定
- 此索引是否在集群中的某个位置具有关联的汇总数据?
- 如果第一个问题的答案是肯定的,那么汇总了哪些字段、可以执行哪些聚合以及数据存储在哪里?
路径参数
编辑-
<index>
- (字符串) 返回汇总功能的索引、多个索引或索引模式。可以使用
_all
从所有作业中获取汇总功能。
示例
编辑假设我们有一个名为 sensor-1
的索引,其中包含原始数据。我们知道数据会随着时间的推移而增长,因此会有 sensor-2
、sensor-3
等。让我们创建一个针对索引模式 sensor-*
的汇总作业,以适应未来的扩展
resp = client.rollup.put_job( id="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" ] } ], ) print(resp)
const response = await client.rollup.putJob({ id: "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"], }, ], }); console.log(response);
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-*
) 的汇总功能
resp = client.rollup.get_rollup_caps( id="sensor-*", ) print(resp)
response = client.rollup.get_rollup_caps( id: 'sensor-*' ) puts response
const response = await client.rollup.getRollupCaps({ id: "sensor-*", }); console.log(response);
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" } ] } } ] } }
返回的响应包含与原始汇总配置类似的信息,但格式不同。首先,有一些内务处理详细信息:汇总作业 ID、保存汇总数据的索引以及作业所针对的索引模式。
接下来,它显示了一个字段列表,其中包含符合汇总搜索条件的数据。在这里,我们看到四个字段:node
、temperature
、timestamp
和 voltage
。这些字段中的每一个都列出了可能的聚合。例如,您可以在 temperature
字段上使用 min、max 或 sum 聚合,但只能在 timestamp
上使用 date_histogram
。
请注意,rollup_jobs
元素是一个数组;可以为单个索引或索引模式配置多个独立的作业。这些作业中的每一个可能具有不同的配置,因此 API 会返回所有可用配置的列表。
我们还可以通过向 _all
发出请求来检索相同的信息
resp = client.rollup.get_rollup_caps( id="_all", ) print(resp)
response = client.rollup.get_rollup_caps( id: '_all' ) puts response
const response = await client.rollup.getRollupCaps({ id: "_all", }); console.log(response);
GET _rollup/data/_all
但请注意,如果我们使用具体的索引名称 (sensor-1
),我们将检索不到任何汇总功能
resp = client.rollup.get_rollup_caps( id="sensor-1", ) print(resp)
response = client.rollup.get_rollup_caps( id: 'sensor-1' ) puts response
const response = await client.rollup.getRollupCaps({ id: "sensor-1", }); console.log(response);
GET _rollup/data/sensor-1
{ }
这是为什么?原始汇总作业是针对特定的索引模式 (sensor-*
) 配置的,而不是具体的索引 (sensor-1
)。因此,虽然该索引属于该模式,但汇总作业仅在整个模式上有效,而不仅仅是其中一个包含的索引。因此,出于这个原因,获取汇总功能 API 仅根据最初配置的索引名称或模式返回信息。