匯總作業(yè)是一項周期性任務,它匯總索引模式指定的索引中的數(shù)據(jù),并將其匯總到新索引中。在下面的示例中,我們創(chuàng)建了一個名為sensor的索引,該索引具有不同的日期時間戳。然后我們創(chuàng)建一個rollup作業(yè),使用cron job周期性地從這些索引中匯總數(shù)據(jù)。
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 }
現(xiàn)在,為其他文檔添加第二個文檔,依此類推。
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參數(shù)控制作業(yè)的激活時間和激活頻率。當匯總作業(yè)的cron計劃觸發(fā)時,它將從上次激活后從上次中斷的地方開始匯總
在作業(yè)運行并處理了一些數(shù)據(jù)之后,我們可以使用DSL查詢進行一些搜索。
GET /sensor_rollup/_rollup_search { "size": 0, "aggregations": { "max_temperature": { "max": { "field": "temperature" } } } }