ロールアップインデックス機能APIを取得
8.11.0で非推奨。
ロールアップは将来のバージョンで削除されます。代わりにダウンサンプリングを使用してください。
ロールアップデータが保存されているインデックス(例:ロールアップインデックス)内のすべてのジョブのロールアップ機能を返します。
リクエスト
GET <target>/_rollup/data
前提条件
- Elasticsearchのセキュリティ機能が有効になっている場合、ロールアップ結果を保存するインデックスに対して、
read
、view_index_metadata
、またはmanage
のいずれかのindex privilegeを持っている必要があります。詳細については、セキュリティ特権を参照してください。
説明
単一のロールアップインデックスは、複数のロールアップジョブのデータを保存でき、これらのジョブに応じてさまざまな機能を持つことがあります。
このAPIを使用すると、次のことを確認できます:
- 1. インデックス(またはパターンで指定されたインデックス)に保存されているジョブは何ですか?
- 2. どのターゲットインデックスがロールアップされ、どのフィールドがそのロールアップに使用され、各ジョブでどの集約が実行できるか?
パスパラメータ
<target>
- (必須、文字列)ロールアップ機能を確認するためのデータストリームまたはインデックス。ワイルドカード(
*
)式がサポートされています。
例
#### Python
``````python
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)
`
Js
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_rollup
インデックスに保存されているジョブと機能を確認したい場合は、ロールアップインデックスAPIを使用できます:
Python
resp = client.rollup.get_rollup_index_caps(
index="sensor_rollup",
)
print(resp)
Ruby
response = client.rollup.get_rollup_index_caps(
index: 'sensor_rollup'
)
puts response
Js
const response = await client.rollup.getRollupIndexCaps({
index: "sensor_rollup",
});
console.log(response);
コンソール
GET /sensor_rollup/_rollup/data
URLの最初の部分として具体的なロールアップインデックス名(sensor_rollup
)をリクエストしていることに注意してください。これにより、次のレスポンスが得られます:
コンソール-結果
{
"sensor_rollup" : {
"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
の4つのフィールドが表示されます。これらのフィールドには、可能な集約がリストされています。たとえば、temperature
フィールドに対しては最小、最大、または合計の集約を使用できますが、timestamp
に対してはdate_histogram
のみが使用できます。
インデックスと対話する他のAPIと同様に、明示的なインデックスの代わりにインデックスパターンを指定できます:
#### Python
``````python
resp = client.rollup.get_rollup_index_caps(
index="*_rollup",
)
print(resp)
`
Ruby
response = client.rollup.get_rollup_index_caps(
index: '*_rollup'
)
puts response
Js
const response = await client.rollup.getRollupIndexCaps({
index: "*_rollup",
});
console.log(response);
コンソール
GET /*_rollup/_rollup/data