Elasticsearch数据冷热分离

1. 节点属性配置

在 Elasticsearch 的每个节点的配置文件(elasticsearch.yml)中,为节点分配自定义属性:

yaml 复制代码
# 热节点(性能较高的节点)
node.attr.data_tier: hot

# 温节点(性能适中的节点)
node.attr.data_tier: warm

# 冷节点(性能较低的节点,用于索引归档)
node.attr.data_tier: cold
2. 配置 ILM

ILM 可以自动管理数据的生命周期,包括将索引从热节点迁移到温节点、冷节点,或最终删除。

创建一个生命周期策略:

json 复制代码
PUT _ilm/policy/log_data_policy

{
  "policy": {
    "description": "Hot-Warm-Cold ILM",
    "phases": {
      "hot": {
        "min_age": "0ms",
        "actions": {
          "rollover": {
            "max_age": "1d",
            "max_size": "50gb"
          }
        }
      },
      "warm": {
        "min_age": "1d",
        "actions": {
          "allocate": {
            "require": {
              "data_tier": "warm"
            }
          },
          "forcemerge": {
            "max_num_segments": 1
          }
        }
      },
      "cold": {
        "min_age": "7d",
        "actions": {
          "allocate": {
            "require": {
              "data_tier": "cold"
            }
          },
          "forcemerge": {
            "max_num_segments": 1
          },
          "freeze": {}
        }
      },
      "delete": {
        "min_age": "30d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

这个策略分为四个阶段:

  1. 热(hot)阶段:索引会在热节点上存储,支持高频访问。
  2. 温(warm)阶段:1 天后,索引被迁移到温节点,减少资源消耗。
  3. 冷(cold)阶段:7 天后,迁移到冷节点,冻结索引,仅用于低频访问。
  4. 删除(delete)阶段:30 天后,删除索引以释放存储空间。
3.创建索引模板并绑定 ILM 策略
json 复制代码
PUT _template/log_template
{
  "index_patterns": [
    "*-log-data-*"
  ],
  "order": 0,
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1,
    "index.routing.allocation.require.data_tier": "hot",
    "index.lifecycle.name": "log_data_policy",
    "index.lifecycle.rollover_alias": "log_alias"
  },
  "aliases": {
    "app_log": {}
  },
  "mappings": {
    "dynamic": false,  
    "properties": {
      "@timestamp": {
        "type": "date"
      },
      "application": {
        "type": "keyword",
        "ignore_above": 30
      },
      "class": {
        "type": "keyword",
        "index": false,
        "ignore_above": 256
      },
      "client_ip": {
        "type": "ip"
      },
      "original_ip": {
        "type": "ip"
      },
      "level": {
        "type": "keyword",
        "ignore_above": 10
      },
      "message": {
        "type": "text",
        "analyzer": "standard"
      },
      "response_time": {
        "type": "integer",
        "index": false
      },
      "servlet_path": {
        "type": "keyword",
        "ignore_above": 50
      },
      "status": {
        "type": "integer"
      },
      "thread": {
        "type": "keyword",
        "index": false,
        "ignore_above": 30
      },
      "logtime": {
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss.SSS"
      }
    }
  }
}
配置解释:

热阶段(hot phase)

  • min_age: "0ms" 表示索引刚创建时就进入热阶段,存储当天的数据。
  • rollover 操作:当索引达到 max_age: "1d" 或者 max_size: "50gb" 时,会触发索引的滚动,创建新的索引并继续写入数据。max_age: "1d" 确保热节点只存储当天的索引。

温阶段(warm phase)

  • min_age: "1d" 表示数据在热阶段存储 1 天后转到温阶段,存储1天外至7天内的数据。
  • allocate 操作:将索引迁移到标记为 warm 的节点上,可以在温节点上做段合并(forcemerge),提高查询效率。

冷阶段(cold phase)

  • min_age: "7d" 表示数据在7天后进入冷阶段,存储7天外至30天内的数据。
  • allocate 操作:将索引迁移到标记为 cold 的节点上。
  • freeze 操作:将冷数据冻结,这会显著减少存储需求,但会降低查询性能,因为冻结后的索引不能被写入,只能读取。

删除阶段(delete phase)

  • min_age: "30d" 表示在数据存储超过30天后将其删除,防止过期数据占用过多存储空间。

freeze 操作

  • 在冷阶段使用 freeze 操作将索引冻结。冻结索引在读取时更节省空间,但不能进行写入或更新操作。适用于存储不再活跃、且访问频率低的历史数据。

forcemerge 操作

  • 在温节点和冷节点阶段进行段合并,减少索引中的段数量,从而提高查询效率和减少存储空间占用。确保该操作只应用于只读索引。

delete 操作

  • 设置为30天后删除数据,防止数据积累过多。可以调整 min_age 来控制删除数据的时间窗口。
相关推荐
circuitsosk28 分钟前
跨境电商智能化实战:AI如何赋能客服自动回复、广告智能投放与供应链预测
大数据·人工智能·python·langchain·智能客服
数智化管理手记2 小时前
海量数据如何沉淀有效数据资产?数据标准化治理方案如何搭建?
java·大数据·人工智能
刀客Doc2 小时前
即时零售不只是多一个渠道,品牌开始重做终端生意
大数据·数据库
湘美书院--湘美谈教育2 小时前
湘美书院主理人谈AI文学:提示词与Skill的与时俱进
大数据·人工智能·安全·自动化·生活
weixin_549808362 小时前
人力资源数字化转型:从工具堆叠到AI原生架构的组织级跃迁路径
大数据·人工智能
l0001092 小时前
图书馆静谧环境构建:主流声学品牌产品与服务梳理
大数据·人工智能·声音
ACP广源盛139246256734 小时前
蚂蚁百灵 Ling‑3.0‑flash 开源 + 昇腾 0‑Day 原生适配@ACP#GSV9001E 在国产算力矩阵中的机会与落地场景
大数据·人工智能·分布式·单片机·嵌入式硬件
微三云-张梅5 小时前
东莞企业做GEO:AI信任体系的三个建设层级
大数据·人工智能·微三云geo·东莞系统开发·东莞geo
starzy19906 小时前
Spark 核心之 Spark-SortShuffle 原理深度剖析
大数据·spark
heimeiyingwang6 小时前
【GitOps·入门篇】工具生态:ArgoCD、Flux、Jenkins X 对比选型
jenkins·flux·argocd·gitops