Elasticsearch - Dữ liệu cuộn lên
Công việc tổng hợp là một công việc định kỳ tóm tắt dữ liệu từ các chỉ số được chỉ định bởi một mẫu chỉ mục và cuộn nó vào một chỉ mục mới. Trong ví dụ sau, chúng tôi tạo một chỉ mục có tên là cảm biến với các dấu thời gian ngày tháng khác nhau. Sau đó, chúng tôi tạo một công việc cuộn lên để cuộn dữ liệu từ các chỉ số này theo định kỳ bằng cách sử dụng công việc cron.
PUT /sensor/_doc/1
{
"timestamp": 1516729294000,
"temperature": 200,
"voltage": 5.2,
"node": "a"
}
Khi chạy đoạn mã trên, chúng tôi nhận được kết quả sau:
{
"_index" : "sensor",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
Bây giờ, thêm tài liệu thứ hai, v.v. cho các tài liệu khác.
PUT /sensor-2018-01-01/_doc/2
{
"timestamp": 1413729294000,
"temperature": 201,
"voltage": 5.9,
"node": "a"
}
Tạo một công việc tổng hợp
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"]
}
]
}
Tham số cron kiểm soát thời gian và tần suất công việc kích hoạt. Khi lịch trình cron của công việc cuộn lên kích hoạt, nó sẽ bắt đầu cuộn lên từ vị trí đã dừng lại sau lần kích hoạt cuối cùng
Sau khi công việc đã chạy và xử lý một số dữ liệu, chúng ta có thể sử dụng DSL Query để thực hiện một số tìm kiếm.
GET /sensor_rollup/_rollup_search
{
"size": 0,
"aggregations": {
"max_temperature": {
"max": {
"field": "temperature"
}
}
}
}