带你读《Elastic Stack 实战手册》之44:——3.5.3.Rollup (1)

简介: 带你读《Elastic Stack 实战手册》之44:——3.5.3.Rollup (1)

3.5.3.Rollup


创作人杨景江

审稿人朱永生

 

汇总作业( rollup jobs )是周期性执行的任务,通过汇总作业,可以将某些索引中的数据进行周期性自定义化聚合,然后将聚合后的数据写入到新的索引中,整个流程叫做 Rollup 。

 

使用场景:

 

汇总历史数据

 

由于历史数据数据量大,占用磁盘成本高,相关业务方只关心近期几天的原始数据,历史数据不关心原始数据,只关心固定指标统计。为了节省成本,就可以通过 Rollup 操作将历史数据进行汇总,写入到新的索引,之后可以将历史索引删除( ILM 功能),进而节省大量成本

 

转换最佳时间:

 

由于数据量或机器硬件等原因,导致实时聚合查询耗时较长,可以通过在夜间或者准实时进行 Rollup 操作,将前一天索引或者几分钟前的数据进行汇总,写入到新索引(将毫秒级别数据汇总,转换为秒级甚至分钟级别),用户查询 Rollup 后新索引的数据,进而提升查询效率。

 

汇总历史数据功能限制:

 

汇总功能只允许使用以下聚合方式对字段进行分组

 

l Date Histogram aggregation

l Histogram aggregation

l Terms aggregation (使用较多)

    968         >   三、产品能力

 

数字字段只可以进行如下指标聚合

 

l Min aggregation

l Max aggregation

l Sum aggregation

l Average aggregation

l Value Count aggregation

 

每个功能都要结合具体业务场景来使用,切忌为了使用功能而设计。

 

API 介绍

 

此处以统计 Elasticsearch 慢查数据功能为例进行介绍(敏感信息已经替换)

 

数据准备

 

索引 mapping 结构:

 

PUT es-slowlog-2021-04-21
{
    "mappings": {
      "_field_names": {
        "enabled": false
      },
      "dynamic_templates": [
        {
          "strings": {
            "match_mapping_type": "string",
            "mapping": {
              "ignore_above": 512,
              "type": "keyword"
            }
    969         >   三、产品能力
          }
        }
      ],
      "properties": {
        "@timestamp": {
          "type": "date"
        },
        "cluster": {
          "type": "keyword",
          "ignore_above": 512
        },
    "host": { 
          "properties": { 
            "name": { 
              "type": "keyword",
              "ignore_above": 512
            }
          }
        },
        "elasticsearch": {
          "properties": {
            "index": {
              "properties": {
                "name": {
                  "type": "keyword",
                  "ignore_above": 512
                }
              }
            }
          }
        },
        "timestamp_local": {
          "type": "date"
        }
      }
    }
}

单条数据 demo 样例(与上边的 mapping 对应):


POST es-slowlog-2021-04-21/_doc
{
  "cluster": "clustername-demo",
  "offset": 0,
  "log": {
    "level": "WARN"
  },
  "prospector": {
    "type": "log"
  },
  "source": "/home/elasticsearch/clustername-demo_index_search_slowlog.log",
  "message": "[2021-04-21T14:03:06,896][WARN ][i.s.s.query ] [host_name-demo] [basiclog-slowlog_2021-04-02][2] took[2.3s], took_millis[2307], total_hits[23129 hits], types[], stats[], search_type[QUERY_THEN_FETCH], total_shards[4], source[{\"size\":0,\"query\":{\"bool\":{\"filter\":[{\"match_all\":{\"boost\":1.0}},{\"match_phrase\":{\"logtype.keyword\":{\"query\":\"server\",\"slop\":0,\"zero_terms_query\":\"NONE\",\"boost\":1.0}}},{\"range\":{\"@timestamp\":{\"from\":\"2021-04-02T15:48:04.138Z\",\"to\":\"2021-04-02T16:03:04.138Z\",\"include_lower\":true,\"include_upper\":true,\"format\":\"strict_date_optional_time\",\"boost\":1.0}}}],\"adjust_pure_negative\":true,\"boost\":1.0}},\"_source\":{\"includes\":[],\"excludes\":[]},\"stored_fields\":\"*\",\"docvalue_fields\":[{\"field\":\"@timestamp\",\"format\":\"date_time\"},{\"field\":\"time\",\"format\":\"date_time\"}],\"script_fields\":{},\"track_total_hits\":2147483647,\"aggregations\":{\"2\":{\"terms\":{\"field\":\"cluster.keyword\",\"size\":20,\"min_doc_count\":1,\"shard_min_doc_count\":0,\"show_term_doc_count_error\":false,\"order\":[{\"_count\":\"desc\"},{\"_key\":\"asc\"}]}}}}], id[],",
  "input": {
    "type": "log"
  },
  "logtype": "slowlog",
  "log_type": "basic-slowlog",
  "timestamp_local": "2021-04-21T14:03:06.896+08:00",
  "@timestamp": "2021-04-21T14:03:06.896Z",
  "elasticsearch": {
    "node": {
      "name": "host_name-demo"
    },
    "slowlog": {
      "took": "2.3s",
      "logger": "i.s.s.query "
    },
    "index": {
      "name": "basiclog-slowlog_2021-04-02"
    },
    "shard": {
      "id": "2"
    }
  },
  "host": {
    "name": "host_name-demo"
  },
  "beat": {
    "hostname": "beathostname-demo",
    "name": "beathostname-demo",
    "version": "6.5.4"
  },
  "@version": "1",
  "event": {
    "duration": 2307000000,
    "created": "2021-04-21T06:59:11.934Z",
    "kind": "event",
"category": "database",
    "type": "info"
  }
}

在 Kibana 中配置 Index Patterns

 image.png


注:最新版本 API 请参考官方文档:

https://www.elastic.co/guide/en/elasticsearch/reference/master/xpack-rollup.html

 

《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.3.Rollup (2) https://developer.aliyun.com/article/1228769

 

 

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
安全 Linux 网络安全
/var/log/secure日志详解
Linux系统的 `/var/log/secure` 文件记录安全相关消息,包括身份验证和授权尝试。它涵盖用户登录(成功或失败)、`sudo` 使用、账户锁定解锁及其他安全事件和PAM错误。例如,SSH登录成功会显示"Accepted password",失败则显示"Failed password"。查看此文件可使用 `tail -f /var/log/secure`,但通常只有root用户有权访问。
3801 4
|
应用服务中间件 索引 nginx
生产环境ES查询延迟排查
最近经常收到业务方配置的ES查询延迟告警,同样的请求手动在Kibana控制台执行只需几十毫秒就返回结果。受影响的整个链路情况如下,php应用程序通过部署在ES集群各节点上的nginx访问ES请求查询数据。
5740 0
|
11月前
|
人工智能
RAG - 拒识模块
在RAG(Retrieval-Augmented Generation)模型中,拒识模块(或称为拒绝模块,Reject Module)是一个重要的组成部分,旨在提高生成模型在面对不相关查询或信息时的鲁棒性。RAG模型结合了检索和生成两种能力,通过在生成过程中引入外部文档来增强生成的质量和准确性。
695 2
|
存储 Kubernetes 调度
aspose实现word,excel等文件预览
aspose实现word,excel等文件预览
|
前端开发
记录一下基于jeecg-boot3.0的待办消息移植记录
记录一下基于jeecg-boot3.0的待办消息移植记录
181 0
|
缓存 监控 前端开发
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(3)-再识Fiddler让你感性认识一下
【7月更文挑战第18天】Fiddler界面简要介绍:Fiddler是一个HTTP协议调试代理工具,其界面分为多个部分,包括菜单栏、工具面板、会话列表、监控面板和状态栏。
328 1
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(3)-再识Fiddler让你感性认识一下
|
数据挖掘 数据处理 索引
一文秒懂Pandas中的crosstab与pivot
一文秒懂Pandas中的crosstab与pivot
499 0
|
编解码 计算机视觉 索引
使用ffmpeg MP4转 m3u8并播放 实测!!
使用ffmpeg MP4转 m3u8并播放 实测!!
1011 1

热门文章

最新文章