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

Rassemblement de données Elasticsearch

L'作业 de regroupement est une tâche périodique qui regroupe les données des indices spécifiés par le schéma d'index et les regroupe dans un nouvel index. Dans l'exemple suivant, nous avons créé un index nommé sensor qui a des horodatages de date et heure différents. Ensuite, nous avons créé un作业 de regroupement pour regrouper périodiquement les données à partir de ces indices.

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

Lors de l'exécution du code ci-dessus, nous obtenons le résultat suivant-

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

Maintenant, ajoutez un second document pour d'autres documents, et ainsi de suite.

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

Création de l'作业 de regroupement

PUT _rollup/job/sensor
{
   "index_pattern": \-*
   "rollup_index": \
   "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"]
      }
   ]
}

Les paramètres cron contrôlent le temps et la fréquence d'activation de l'作业. Lorsque le plan cron de l'aggrégation est déclenché, il commencera à agrégater à partir du dernier point d'activation après la dernière interruption

Après que l'作业 a été exécuté et a traité certains données, nous pouvons utiliser des requêtes DSL pour effectuer certaines recherches.

GET /sensor_rollup/_rollup_search
{
   "size": 0,
   "aggregations": {
      "max_temperature": {
         "max": {
            "field": "temperature"
         }
      }
   }
}