English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Elasticsearch 汇总数据

Ein Zusammenfassungsjob ist eine zeitreihenmäßige Aufgabe, die Daten aus den Indexmustern, die angegeben sind, zusammenfasst und diese in einen neuen Index zusammenfasst. Im folgenden Beispiel erstellen wir einen Index namens sensor, der verschiedene Zeitstempel hat. Dann erstellen wir einen Rollup-Job, der regelmäßig Daten aus diesen Indexen zusammenfasst.

PUT /sensor/_doc/1
{
   "timestamp": 1516729294000,
   "temperature": 200,
   "voltage": 5.2,
   "node": "a"
}

Beim Ausführen des obigen Codes erhalten wir folgende Ergebnisse-

{
   "_index" : "sensor",
   "_type" : "_doc",
   "_id" : ""1"
   "_version" : 1,
   "result" : "created",
   "_shards" : {
      "total" : 2,
      "successful" : 1,
      "failed" : 0
   },
   "_seq_no" : 0,
   "_primary_term" : 1
}

Nun fügen Sie für andere Dokumente ein zweites Dokument hinzu und so weiter.

PUT /sensor-2018-01-01/_doc/2
{
   "timestamp": 1413729294000,
   "temperature": 201,
   "voltage": 5.9,
   "node": "a"
}

Erstellen Sie einen Zusammenfassungsjob

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": "temperatur"
         }
      }
   }
}