Elasticsearch現(xiàn)在不在支持刪除type,現(xiàn)在只可以刪除index,因此數(shù)據(jù)必須每天建立一個索引方便老化。這樣template的重要性就體現(xiàn)出來了,可以動態(tài)建立索引。
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*"大家應(yīng)該注意到,這樣建立te_20160709的索引就會根據(jù)template_1來建立索引。如果還有一個模板是"template": "tet*",這樣建立tet_20160709的索引時就會有問題。
源碼實現(xiàn)可以參考:
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());
}
}