1. 程式人生 > >Elasticsearch Rolling up historical data Overview

Elasticsearch Rolling up historical data Overview

Elasticsearch Rolling up historical data

Overview

And while we continue to believe that most data tends to have value over a long period of time, the relative value of the data can decrease as it ages

雖然大多數的資料在很長一段時間內都具有價值,但資料的相對價值會隨著時間的增長而降低。

通過彙總資料來減少儲存成本成為了一種選擇。

Elasticsearch目前支援配置一個定時任務自動把歷史資料彙總到一個新的索引當中。

API Quick Reference

About Job

獲取已有任務列表

GET /_xpack/rollup/job/_all

新增一個任務

新增一個id為video_test的任務

PUT /_xpack/rollup/job/video_test
{
    # 源索引
    "index_pattern": "sinavideo_dispatcher-*",
    # 彙總結果索引
    "rollup_index": "video_test_2",
    # 任務呼叫規則(crontable)
    "cron": "*/1 * * * * ?",
    "page_size"
:1000, # 聚合規則 "groups" : { "date_histogram": { "field": "@timestamp", # 聚合粒度 "interval": "5m", # 資料延遲 "delay": "15m" }, "terms": { "fields": ["domain", "http_code"] } }, # 聚合指標 "metrics": [ { "field"
: "body_bytes_send", "metrics": ["avg"] } ] }

具體各引數參照rollup-job-config

任務啟停

每一個任務預設是停止的,需要呼叫介面啟動

POST /_xpack/rollup/job/video_test/_start

停止

POST /_xpack/rollup/job/video_test/_stop

獲取任務配置

獲取任務配置資訊,其中被刪除的任務無法檢視

GET /_xpack/rollup/job/video_test/

獲取索引對應的任務元資料資訊

GET /_xpack/rollup/data/sinavideo_dispatcher-*

無論是實時資料還是聚合資料都支援_rollup_search_search兩個介面。但是如果要獲取聚合的結果,需要呼叫_rollup_search介面。

以下是獲取每個域名每5分鐘的平均流量大小:

GET video_test_2/_rollup_search
{
  "size": 0,
  "aggregations": {
    "timeline": {
      "date_histogram": {
        "field": "@timestamp",
        "interval": "5m"
      },
      "aggs": {
        "domains": {
          "terms": {
            "field": "domain",
            "size": 10
          },
          "aggs": {
            "avg_body": {
              "avg": {
                "field": "body_bytes_send"
              }
            }
          }
        }
      }
    }
  }
}

_rollup_search介面支援同時查詢實時資料和彙總後的資料。當實時資料和彙總資料存在重疊時,將預設優先使用實時資料來提高資料準確性

GET sinavideo_dispatcher-*,video_test_2/_rollup_search
{
    ...
}

Limitations

  • Only one Rollup index per search(查詢時僅能指定一個彙總索引,對實時索引沒有限定)
  • Can only aggregate what’s been stored(沒有彙總的結果當然無法搜尋)
  • Interval Granularity(配置任務時定義了聚合時間粒度,後續無法獲取小於這個粒度的彙總資料)
  • Limited aggregation components(有限的聚合方法)
  • Limited querying components(有限的查詢方法)

存在的問題

  • Job目前無法修改
  • Kibana暫時不支援_rollup_search

Reference

X-Pack APIs

Rolling up historical data