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 来控制删除数据的时间窗口。
相关推荐
什么嘻嘻果冻16 分钟前
零代码建站开户的适用场景,恐象 AI 能建哪些网站
大数据·人工智能
人工智能培训25 分钟前
具身智能环境交互与学习范式原理
大数据·linux·人工智能·学习·算法·机器学习
2601_9567436844 分钟前
上海GEO营销公司技术评估解析|以盾码无界公开产品路线为观察对象,梳理问题池构建、知识库事实锚定、内容审核与跨模型监测流程,明确现场演示和任务追溯的核验要求
大数据·人工智能·产品运营·技术分享·geo·上海
武汉星际互动1 小时前
技术拐点已至:AI Agent给政务大厅带来什么变革?
大数据·人工智能·政务
程序员大阳1 小时前
副队长大数据教程(7)--Hadoop 集群角色配置逻辑详解
大数据·hadoop·分布式·集群·配置·角色·逻辑
Rock Chin6971 小时前
把 Claude Code 和 Codex 接进微信、飞书、钉钉:LangBot Runner 插件实战
elasticsearch·钉钉·飞书
RD_daoyi1 小时前
外贸独立站从0到1:平台选择 + 建站流程 + 新手避坑
大数据·服务器·网络·人工智能·搜索引擎·职场和发展
Elasticsearch1 小时前
Jina AI:Elasticsearch 集成
elasticsearch
2603_954708312 小时前
微能网协调控制箱突破传统微电网架构瓶颈
大数据·数据库·人工智能·架构·能源
智圣新创012 小时前
教育数字化合规背景下 智圣新创高校一表通建设全国低内耗落地指引
大数据·人工智能