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