ロールアップジョブAPI
8.11.0で非推奨。
ロールアップは将来のバージョンで削除されます。代わりにダウンサンプリングを使用してください。
ロールアップジョブの設定、統計、およびステータスを取得します。
リクエスト
GET _rollup/job/<job_id>
前提条件
- Elasticsearchのセキュリティ機能が有効になっている場合、このAPIを使用するには
monitor
、monitor_rollup
、manage
、またはmanage_rollup
のクラスター権限が必要です。詳細についてはセキュリティ権限を参照してください。
説明
このAPIは、単一のロールアップジョブまたはすべてのロールアップジョブの詳細を返すことができます。
このAPIは、アクティブな(STARTED
およびSTOPPED
の両方)ジョブのみを返します。ジョブが作成され、しばらく実行された後に削除された場合、このAPIはそのジョブに関する詳細を返しません。
過去のロールアップジョブの詳細については、ロールアップ機能APIがより便利かもしれません。
パスパラメータ
<job_id>
- (オプション、文字列)ロールアップジョブの識別子。
_all
の場合、または省略された場合、APIはすべてのロールアップジョブを返します。
レスポンスボディ
jobs
- (配列)ロールアップジョブリソースの配列。
ロールアップジョブリソースのプロパティconfig
- (オブジェクト)ロールアップジョブの設定を含みます。この情報は、ジョブ作成APIを介してジョブを作成する際に提供された設定と同じです。
stats
- (オブジェクト)ロールアップジョブに関する一時的な統計を含みます。たとえば、処理されたドキュメントの数やインデックスされたロールアップサマリードキュメントの数などです。これらの統計は永続化されません。ノードが再起動されると、これらの統計はリセットされます。
status
- (オブジェクト)ロールアップジョブのインデクサーの現在のステータスを含みます。可能な値とその意味は次のとおりです:
stopped
は、インデクサーが一時停止しており、cron間隔がトリガーされてもデータを処理しないことを意味します。started
は、インデクサーが実行中ですが、データを積極的にインデックスしていないことを意味します。cron間隔がトリガーされると、ジョブのインデクサーはデータの処理を開始します。indexing
は、インデクサーがデータを積極的に処理し、新しいロールアップドキュメントを作成していることを意味します。この状態では、以降のcron間隔のトリガーは無視されます。なぜなら、ジョブはすでに前のトリガーでアクティブだからです。abort
は一時的な状態であり、通常はユーザーによって目撃されません。タスクを何らかの理由でシャットダウンする必要がある場合(ジョブが削除された、回復不可能なエラーが発生したなど)に使用されます。abort
状態が設定された後、ジョブはクラスタから自らを削除します。
例
すでにsensor
という名前のロールアップジョブを作成している場合、ジョブに関する詳細を次のように取得できます:
Python
resp = client.rollup.get_jobs(
id="sensor",
)
print(resp)
Ruby
response = client.rollup.get_jobs(
id: 'sensor'
)
puts response
Js
const response = await client.rollup.getJobs({
id: "sensor",
});
console.log(response);
コンソール
GET _rollup/job/sensor
コンソール-結果
{
"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
配列には、エンドポイントのURLで単一のジョブを要求したため、単一のジョブ(id: sensor
)が含まれています。別のジョブを追加すると、複数のジョブレスポンスがどのように処理されるかを見ることができます:
Python
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)
Js
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 の2番目のジョブを作成します |
|
次に、GetJobs APIで_all を使用してすべてのジョブを要求します |
次のレスポンスが得られます:
Js
{
"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
}
}
]
}