ES 汇总数据

Elasticsearch 提供汇总功能,有助于汇总索引中的数据并将其汇总到新索引中。这些存储的数据可以在未来需要时用于分析,但成本仅为原始数据存储成本的一小部分。在分析中保留历史数据非常有用。然而,有时会因为归档大量数据的财务成本而避免这样做。

Elasticsearch Rollup data

例如,假设一个系统每天生成 4700 万个文档,这需要大量内存来存储它们。每一秒,这些数据都可用于实时分析。在历史分析的情况下,如果我们查看 5 年以上的数据,我们需要以较大的时间间隔工作,例如每小时或每日趋势。我们可以通过将这 4700 万个文档压缩为每小时摘要来节省大量空间。

Elasticsearch 6.3 随附滚动上功能。 elasticsearch 的 rollup 特性对于汇总后存储历史数据非常有用。以便在汇总后存储更少的内存。请注意,汇总作业是一项周期性任务。

汇总入门

要开始汇总功能,我们必须创建一个或多个 "Rollup作业" 来汇总数据。这些作业会汇总您指定的索引,并将滚动的文档放在二级索引中。您可以选择您选择的二级索引来放置这些滚动文档。这些汇总作业在后台连续运行。

创建索引

首先,我们将创建一个包含不同时间戳的索引。创建索引后,我们将使用 cron 作业定期创建汇总作业。您的文档可能类似于:

PUT /rollupexample/_doc/01
{
   "timestamp": 1516729294000,
   "temperature": 200,
   "voltage": 5.2,
   "node": "x"
}     

Response

通过执行上面的索引创建查询以及时间戳,您将获得与下面给出的相同的响应:

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

向rollupexample 索引添加更多文档。

Add more documents to rollupexample index.
PUT /rollupexample-2020-01-01/_doc/02
{
   "timestamp": 1413729294000,
   "temperature": 201,
   "voltage": 5.9,
   "node": "x"
}     

创建汇总作业

现在我们将使用 _rollup API 创建汇总作业。这些文档汇总到每小时摘要中。汇总数据的代码可能看起来像:

Copy code

PUT _rollup/job/rollupexample
{
   "index_pattern": "sensor-*",
   "rollup_index": "sensor_rollup",
   "cron": "*30 * * * * ?",
   "page_size": 1000,
   "groups": {
       "date_histogram": {
           "field": "timestamp",
           "interval": "60m"
        },
       "terms": {
           "field": ["node"]
        }
     },
       "metrics": [
          {
             "field": "temperature",
             "metrics": ["min", "max", "sum"]
          },
          {
             "field": "voltage",
             "metrics": ["avg"]
          }
     ]
}     

cron 参数有助于控制作业激活。它控制作业激活的时间和频率。当汇总作业的 cron 计划触发时,它开始从上次激活后离开的点开始汇总数据的过程。

汇总搜索

一次作业开始运行并处理了一些数据,我们可以使用 DSL Query 来搜索一些数据。查看下面的查询来搜索滚动数据:

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

每当我们使用这项技术时,总会想到一些与我们的数据相关的事情。数据备份和恢复就是其中之一。随着数据的增加,用户开始担心它。他们总是希望他们的数据是安全的,并且空间也是免费的。 Elasticsearch 社区关注用户的这个问题并提 ...