ES7中,冷热分离和索引生命周期的简单实践

一个简单的需求:将实时写入的索引写入到高性能但容量较小的节点,将不更新的历史索引转移到大容量性能不高的节点,并删除一段时间之前的索引。

配置两个节点(hot/warn)的ES集群

在配置文件中给ES节点打标签:

node.attr.node_type: hot
node.attr.node_type: warn

效果:

GET /_cat/nodeattrs?v&h=node,attr,value
node       attr              value
es-node-01 node_type         hot
es-node-02 node_type         warn
......

配置索引模板

创建message-logs-*索引模板,并设置索引落到 hot 节点

PUT/_template/template_message_logs {
  "index_patterns": ["message-logs-*"],
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 0,
    "routing.allocation.require.node_type": "hot"
  }
}

配置定时任务

## 每天1点将前一天的日志转移到warn节点
00 01 * * * curl -XPUT -H ‘Content-Type: application/json‘ "http://127.0.0.1:9200/message-logs-$(date +\%Y\%m\%d -d‘1 day ago‘)/_settings?pretty" -d ‘{"index.routing.allocation.require.node_type": "warn"}‘ >/dev/null 2>&1

## 每天2点将7天前的日志删除
00 02 * * * curl -XDELETE "http://127.0.0.1:9200/message-logs-$(date +\%Y\%m\%d -d‘7 day ago‘)" >/dev/null 2>&1

这样message-logs-yyyymmdd索引就实现了冷热分离。当天的索引写入hot节点,定时任务将前一天的所以转移到warn节点,超过7天的自动删除。
看看效果:
ES7中,冷热分离和索引生命周期的简单实践


ES7中,冷热分离和索引生命周期的简单实践

上一篇:vue2和vue3的基础用法对比第三篇


下一篇:FineUI登入的例子中遇到的一些问题