Elasticsearch Template

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()); 
   }
}

你可能感兴趣的:(Elasticsearch Template)