template在创建索引的时候会用到, 事先定义好的template在创新索引的时候自动匹配,将其定义好的属性添加到索引中,template像index一样可以定义settings,mappings,version,order,index_patterns,aliases;其中index_patterns用来验证新创建索引是是否与该template匹配,order用来解决如果有多个template与当前新创建的index相匹配,而且相同的属性有不同值,这个时候会根据order值的高低判断使用哪一个template的值,最后会选定值最后的那个template,version用来方便外部系统对template进行管理,并没有什么,实在性的作用
1.创建template
PUT /_template/template_1
{
"index_patterns": [
"index_*",
"test_*"
],
"settings": {
"number_of_shards": 2,
"number_of_replicas": 3
},
"mappings": {
"log": {
"properties": {
"name": {
"type": "text"
},
"create_time": {
"type": "date"
}
}
}
},
"aliases": {
"a1": {},
"a2": {
"filter": {
"term": {
"name": "minging"
}
}
}
},
"version": 123
}
//验证创建template是否会在新创建index的时候起到作用
//我们发现在创建test_2的时候什么参数都没有提供,但是在创建好的index中却多出了很多别的属性, 仔细观察就会发现这些全是在template_1中定义的
PUT /test_2
{}
GET /test_2
{
"test_2": {
"aliases": {
"a1": {},
"a2": {
"filter": {
"term": {
"name": "minging"
}
}
}
},
"mappings": {
"log": {
"properties": {
"create_time": {
"type": "date"
},
"name": {
"type": "text"
}
}
}
},
"settings": {
"index": {
"creation_date": "1523196714432",
"number_of_shards": "2",
"number_of_replicas": "3",
"uuid": "ZdwS1OzfQEek4dKe8X0G-A",
"version": {
"created": "6020399"
},
"provided_name": "test_2"
}
}
}
}
2.查询template
GET /_template/template_1
{
"template_1": {
"order": 0,
"version": 123,
"index_patterns": [
"index_*",
"test_*"
],
"settings": {
"index": {
"number_of_shards": "2",
"number_of_replicas": "3"
}
},
"mappings": {
"log": {
"properties": {
"name": {
"type": "text"
},
"create_time": {
"type": "date"
}
}
}
},
"aliases": {
"a2": {
"filter": {
"term": {
"name": "minging"
}
}
},
"a1": {}
}
}
}
3.更新template
在官方文档中好像还没找到关于更新template更新的方法
4.删除template
DELETE /_template/template_1