Elasticsearch-rollup-data
提供:Dev Guides
Elasticsearch-ロールアップデータ
ロールアップジョブは、インデックスパターンで指定されたインデックスのデータを要約し、それを新しいインデックスにロールする定期的なタスクです。 次の例では、異なるタイムスタンプを持つsensorという名前のインデックスを作成します。 次に、cronジョブを使用してこれらのインデックスから定期的にデータをロールアップするロールアップジョブを作成します。
PUT/sensor/_doc/1
{
"timestamp": 1516729294000,
"temperature": 200,
"voltage": 5.2,
"node": "a"
}
上記のコードを実行すると、次の結果が得られます-
{
"_index" : "sensor",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
次に、他のドキュメントにも同様に2番目のドキュメントを追加します。
PUT/sensor-2018-01-01/_doc/2
{
"timestamp": 1413729294000,
"temperature": 201,
"voltage": 5.9,
"node": "a"
}
ロールアップジョブを作成する
PUT _rollup/job/sensor
{
"index_pattern": "sensor-*",
"rollup_index": "sensor_rollup",
"cron": "*/30 * * * * ?",
"page_size" :1000,
"groups" : {
"date_histogram": {
"field": "timestamp",
"interval": "60m"
},
"terms": {
"fields": ["node"]
}
},
"metrics": [
{
"field": "temperature",
"metrics": ["min", "max", "sum"]
},
{
"field": "voltage",
"metrics": ["avg"]
}
]
}
cronパラメーターは、ジョブをアクティブにするタイミングと頻度を制御します。 ロールアップジョブのcronスケジュールがトリガーされると、最後のアクティベーション後に中断したところからロールアップが開始されます
ジョブが実行され、データが処理されたら、DSLクエリを使用して検索を実行できます。
GET/sensor_rollup/_rollup_search
{
"size": 0,
"aggregations": {
"max_temperature": {
"max": {
"field": "temperature"
}
}
}
}