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

تجميع البيانات في Elasticsearch

وظيفة التجميع هي مهمة دورية تقوم بتجميع بيانات المؤشرات المحددة في نمط المؤشرات، وتجمعها في مؤشر جديد. في المثال التالي، أنشأنا مؤشرًا يُدعى sensor يحتوي على توقيتات زمنية مختلفة. ثم أنشأنا وظيفة تجميع باستخدام job schedule periodic لجمع البيانات من هذه المؤشرات.

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
}

الآن، أضف مستندًا ثانيًا آخر للوثائق، وهكذا.

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