Elasticsearch数据冷热分离

打印 上一主题 下一主题

主题 1772|帖子 1772|积分 5316

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. 节点属性设置

在 Elasticsearch 的每个节点的设置文件(elasticsearch.yml)中,为节点分配自界说属性:
  1. # 热节点(性能较高的节点)
  2. node.attr.data_tier: hot
  3. # 温节点(性能适中的节点)
  4. node.attr.data_tier: warm
  5. # 冷节点(性能较低的节点,用于索引归档)
  6. node.attr.data_tier: cold
复制代码
2. 设置 ILM

ILM 可以主动管理数据的生命周期,包罗将索引从热节点迁移到温节点、冷节点,或最终删除。
创建一个生命周期策略:
  1. PUT _ilm/policy/log_data_policy
  2. {
  3.   "policy": {
  4.     "description": "Hot-Warm-Cold ILM",
  5.     "phases": {
  6.       "hot": {
  7.         "min_age": "0ms",
  8.         "actions": {
  9.           "rollover": {
  10.             "max_age": "1d",
  11.             "max_size": "50gb"
  12.           }
  13.         }
  14.       },
  15.       "warm": {
  16.         "min_age": "1d",
  17.         "actions": {
  18.           "allocate": {
  19.             "require": {
  20.               "data_tier": "warm"
  21.             }
  22.           },
  23.           "forcemerge": {
  24.             "max_num_segments": 1
  25.           }
  26.         }
  27.       },
  28.       "cold": {
  29.         "min_age": "7d",
  30.         "actions": {
  31.           "allocate": {
  32.             "require": {
  33.               "data_tier": "cold"
  34.             }
  35.           },
  36.           "forcemerge": {
  37.             "max_num_segments": 1
  38.           },
  39.           "freeze": {}
  40.         }
  41.       },
  42.       "delete": {
  43.         "min_age": "30d",
  44.         "actions": {
  45.           "delete": {}
  46.         }
  47.       }
  48.     }
  49.   }
  50. }
复制代码
这个策略分为四个阶段:

  • 热(hot)阶段:索引会在热节点上存储,支持高频访问。
  • 温(warm)阶段:1 天后,索引被迁移到温节点,减少资源斲丧。
  • 冷(cold)阶段:7 天后,迁移到冷节点,冻结索引,仅用于低频访问。
  • 删除(delete)阶段:30 天后,删除索引以释放存储空间。
3.创建索引模板并绑定 ILM 策略

  1. PUT _template/log_template
  2. {
  3.   "index_patterns": [
  4.     "*-log-data-*"
  5.   ],
  6.   "order": 0,
  7.   "settings": {
  8.     "number_of_shards": 1,
  9.     "number_of_replicas": 1,
  10.     "index.routing.allocation.require.data_tier": "hot",
  11.     "index.lifecycle.name": "log_data_policy",
  12.     "index.lifecycle.rollover_alias": "log_alias"
  13.   },
  14.   "aliases": {
  15.     "app_log": {}
  16.   },
  17.   "mappings": {
  18.     "dynamic": false,  
  19.     "properties": {
  20.       "@timestamp": {
  21.         "type": "date"
  22.       },
  23.       "application": {
  24.         "type": "keyword",
  25.         "ignore_above": 30
  26.       },
  27.       "class": {
  28.         "type": "keyword",
  29.         "index": false,
  30.         "ignore_above": 256
  31.       },
  32.       "client_ip": {
  33.         "type": "ip"
  34.       },
  35.       "original_ip": {
  36.         "type": "ip"
  37.       },
  38.       "level": {
  39.         "type": "keyword",
  40.         "ignore_above": 10
  41.       },
  42.       "message": {
  43.         "type": "text",
  44.         "analyzer": "standard"
  45.       },
  46.       "response_time": {
  47.         "type": "integer",
  48.         "index": false
  49.       },
  50.       "servlet_path": {
  51.         "type": "keyword",
  52.         "ignore_above": 50
  53.       },
  54.       "status": {
  55.         "type": "integer"
  56.       },
  57.       "thread": {
  58.         "type": "keyword",
  59.         "index": false,
  60.         "ignore_above": 30
  61.       },
  62.       "logtime": {
  63.         "type": "date",
  64.         "format": "yyyy-MM-dd HH:mm:ss.SSS"
  65.       }
  66.     }
  67.   }
  68. }
复制代码
设置解释:

热阶段(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 来控制删除数据的时间窗口。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

盛世宏图

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表