如何获取Elasticsearch索引模板的创建时间
Elasticsearch获取索引模板创建时间的方法
GET _cat/templates接口本身就不返回模板创建时间字段,不用在这个接口上反复调试,按你用的ES版本选下面的方法就行:
7.x及以上版本:直接调用模板查询接口读取内置元数据
从7.x版本开始,ES会自动给所有新建的索引模板记录创建时间戳,存在模板的元数据字段里,直接查就能拿到:
- 查7.8版本之后主推的组合索引模板(Composable Index Template):
调用GET _index_template/*拉取全量组合模板,返回结果里每个模板对应的index_template._meta.create_time字段就是毫秒级Unix时间戳格式的创建时间,按字段值升序排第一个就是最早创建的模板。
单模板查询的返回结构参考:{ "index_templates": [ { "name": "business-logs-template", "index_template": { "index_patterns": ["biz-logs-*"], "_meta": { "create_time": 1698724800000, "description": "业务日志索引模板" } } } ] } - 查旧版遗留索引模板(Legacy Template):
调用GET _template/*拉取全量旧模板,每个模板下的_meta.create_time字段就是对应创建时间。
6.x及更早版本:无内置创建时间字段的回溯方案
6.x及更早版本不会自动记录模板创建时间,没有直接查询的接口,只能通过两种方式确认创建顺序:
- 如果集群开启了审计日志,直接搜索
create_index_template类型的事件日志,日志里的事件时间就是模板的准确创建时间 - 如果没开审计日志,可以去主节点的
data/cluster_state持久化目录下找集群状态文件,文件里记录的模板条目更新时间可以近似作为创建时间,注意如果模板后续做过修改,这个时间会同步更新,无法对应初始创建时间。
注意事项
- 不要用模板返回的
version字段判断创建先后,这个字段是用户创建/修改模板时手动传入的自定义值,和实际创建时间没有对应关系 - 如果模板被人工编辑过
_meta字段,create_time可能被篡改,这种场景下要以审计日志的记录为准
内容的提问来源于stack exchange,提问作者Sagar Vaghela
相关产品推荐
相关产品推荐

