Elasticsearch现在不在支持删除type,现在只可以删除index,因此数据必须每天建立一个索引方便老化。这样template的重要性就体现出来了,可以动态建立索引。
PUT /_template/template_1
{
"template": "te*",
"settings": {
"number_of_shards": 1
},
"mappings": {
"type1": {
"_source": {
"enabled": false
},
"properties": {
"host_name": {
"type": "string",
"index": "not_analyzed"
},
"created_at": {
"type": "date",
"format": "EEE MMM dd HH:mm:ss Z YYYY"
}
}
}
}
}
template只在建立索引的时候起作用,如果更新template,老的索引不会变化。
"template": "te*"
大家应该注意到,这样建立te_20160709的索引就会根据template_1来建立索引。如果还有一个模板是"template": "tet*"
,这样建立tet_20160709的索引时就会有问题。
源码实现可以参考:
MetaDataCreateIndexService ->createIndex->findTemplates->indexTemplateFilter.apply(request, template)
private static class DefaultIndexTemplateFilter implements IndexTemplateFilter {
@Override
public boolean apply(CreateIndexClusterStateUpdateRequest request, IndexTemplateMetaData template) {
return Regex.simpleMatch(template.template(), request.index());
}
}