Elasticsearch-데이터 롤업

롤업 작업은 인덱스 패턴으로 지정된 인덱스의 데이터를 요약하고 새 인덱스로 롤업하는주기적인 작업입니다. 다음 예에서는 서로 다른 날짜 타임 스탬프를 사용하여 sensor라는 인덱스를 만듭니다. 그런 다음 cron 작업을 사용하여 주기적으로 이러한 인덱스의 데이터를 롤업하는 롤업 작업을 만듭니다.

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 매개 변수는 작업이 활성화되는시기와 빈도를 제어합니다. 롤업 작업의 크론 일정이 트리거되면 마지막 활성화 후 중단 된 지점부터 롤업을 시작합니다.

작업이 실행되고 일부 데이터를 처리 한 후 DSL 쿼리를 사용하여 검색을 수행 할 수 있습니다.

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