ES 生命周期管理

发布于:2024-06-03 ⋅ 阅读:(144) ⋅ 点赞:(0)

一 .概念

ILM定义了四个生命周期阶段:
Hot:正在积极地更新和查询索引。
Warm:不再更新索引,但仍在查询。
cold:不再更新索引,很少查询。信息仍然需要可搜索,但是如果这些查询速度较慢也可以。
Delete:不再需要该索引,可以安全地将其删除

仅仅在 Hot阶段 可以设置 rollover滚动

在实验中可以修改设置,来缩短ILM检测时间间隔。ILM定期运行(indices.lifecycle.poll_interval),默认是10分钟,检查索引是否符合策略标准,并执行所需的任何步骤

PUT /_cluster/settings

{ "transient": { "indices.lifecycle.poll_interval": "1m" } }

参数的设置:满足任意一个创建新的索引

HOT

WARM

Delete

二. 实战

1 .创建生命周期策略模板:PUT 请求

http://localhost:9099/_ilm/policy/my_index_rollover_policy

"max_docs": 5000000 设置超过500万是创建新的索引,实际测试可以设置小一点

{
    "policy": {
        "phases": {
            "hot": {
                "actions": {
                    "rollover": {
                        "max_docs": 5000000
                    },
                    "set_priority": {
                        "priority": 100
                    }
                }
            },
            "warm": {
                "min_age": "30d",
                "actions": {
                    "forcemerge": {
                        "max_num_segments": 1
                    },
                    "shrink": {
                        "number_of_shards": 1
                    },
                    "allocate": {
                        "number_of_replicas": 1
                    },
                    "set_priority": {
                        "priority": 50
                    }
                }
            },
            "cold": {
                "min_age": "90d",
                "actions": {
                    "freeze": {},
                    "allocate": {
                        "require": {
                            "type": "cold"
                        }
                    },
                    "set_priority": {
                        "priority": 10
                    }
                }
            },
            "delete": {
                "min_age": "3650d",
                "actions": {
                    "delete": {}
                }
            }
        }
    }
}

2. 创建索引模板(日志统计索引) PUT 请求:

http://localhost:9099/_template/my_statistic_log

{
    "index_patterns": [
        "my_statistic_log-*"
    ],
    "settings": {
        "index.number_of_shards": 5,
        "index.number_of_replicas": 1,
        "refresh_interval": "60s",
        "index.lifecycle.name": "my_index_rollover_policy",
        "index.lifecycle.rollover_alias": "statistic_log_write"
    },
    "aliases": {
        "statistic_log_read": {}
    },
    "mappings": {
        "log": {
            "dynamic": "strict",
            "_field_names": {
                "enabled": false
            },
            "dynamic_templates": [
                {
                    "date": {
                        "match": "*Date",
                        "mapping": {
                            "type": "date"
                        }
                    }
                },
                {
                    "strings": {
                        "match_mapping_type": "string",
                        "mapping": {
                            "type": "keyword"
                        }
                    }
                },
                {
                    "long_or_text": {
                        "match": "*Time",
                        "mapping": {
                            "type": "date"
                        }
                    }
                },
                {
                    "dataFormat": {
                        "match": "*Date",
                        "mapping": {
                            "type": "date"
                        }
                    }
                },
                {
                    "timeFormat": {
                        "match": "*Time",
                        "mapping": {
                            "type": "date"
                        }
                    }
                },
                {
                    "noAnalyzed": {
                        "match_mapping_type": "string",
                        "mapping": {
                            "type": "keyword"
                        }
                    }
                }
            ],
            "properties": {
                "area": {
                    "type": "keyword"
                },
                "desc": {
                    "type": "keyword"
                },
                "hour": {
                    "type": "integer"
                },
                "day": {
                    "type": "integer"
                },
                "startTime": {
                    "type": "date",
                    "format": "yyyy-MM-dd HH:mm:ss"
                },
                "totalCount": {
                    "type": "long"
                }
            }
        }
    }
}

3.    根据索引模板创建起始索引(日志统计索引)
put 请求: http://localhost:9099/my_statistic_log-000001

{
    
    "aliases": {
        "statistic_log_write": {
            "is_write_index": true
        }
    }
}

4.    查看索引生效:GET请求 
http://localhost:9099/my_statistic_log-000001/_ilm/explain

https://www.elastic.co/guide/en/elasticsearch/reference/6.8/_setting_up_a_new_policy.html