什么是Index Template
Index Templates 帮助你设定Mappings 和Settings,并且按照一定的规则,字段匹配到新创建的索引上。
- 模板仅在一个索引被创建是才会产生作用,修改模板不会影响已经创建的索引。
- 可以设定多个索引模版,这些设置会被“merge”在一起。
- 你可以指定“order”的数值,控制“merging”的过程。
Inde Template 的工作方式
- 当一个索引被创建时
- 应用Elasticsearch 默认的settings和mappings
- 应用order数值低的Index Template 中的设定
- 应用order数值高的Index Template 的设定,之前的设定会被覆盖
- 应用创建索引时,用户所指定的Settings和Mappings,并覆盖之前的模板中的设定。
PUT ttemplate/_doc/1
{
"someNumber":"1",
"someDate":"2019/01/01"
}
创建一个默认的模板
PUT _template/template_default
{
"index_patterns": ["*"],
"order" : 0,
"version": 1,
"settings": {
"number_of_shards": 1,
"number_of_replicas":1
}
}
创建一个 dynamic templates
PUT my_index
{
"mappings": {
"dynamic_templates": [
{
"strings_as_boolean": {
"match_mapping_type": "string",
"match":"is*",
"mapping": {
"type": "boolean"
}
}
},
{
"strings_as_keywords": {
"match_mapping_type": "string",
"mapping": {
"type": "keyword"
}
}
}
]
}
}
![image](/Users/hua/Library/Application Support/typora-user-images/image-20210110162203988.png)
设置dynamic_templates,并且搜索
PUT my_index
{
"mappings": {
"dynamic_templates": [
{
"full_name": {
"path_match": "name.*",
"path_unmatch": "*.middle",
"mapping": {
"type": "text",
"copy_to": "full_name"
}
}
}
]
}
}
PUT my_index/_doc/1
{
"name": {
"first": "John",
"middle": "Winston",
"last": "Lennon"
}
}
GET my_index/_search?q=full_name:John