3.13-IndexTemplate和DynamicTempla
2020-03-23 本文已影响0人
落日彼岸
什么是Index Template
-
Index Template - 帮助你设定Mapping和Setting,并按照一定的规则,自动匹配到新创建的索引上
-
模板仅在一个索引被新创建时,才会产生作用.修改模板不会影响已创建的索引
-
你可以设定多个索引模板,这些设置会被"merge"在一起
-
你可以指定"order"的数值,控制"merging"的过程
-
两个Index Templates
PUT _template/template_default
{
"index_patterns": ["*"],
"order" : 0,
"version": 1,
"settings": {
"number_of_shards": 1,
"number_of_replicas":1
}
}
PUT /_template/template_test
{
"index_patterns" : ["test*"],
"order" : 1,
"settings" : {
"number_of_shards": 1,
"number_of_replicas" : 2
},
"mappings" : {
"date_detection": false,
"numeric_detection": true
}
}
Index Template的工作方式
-
当一个索引被创建时
-
应用ElasticSearch默认的settings和mappings
-
应用order数值低的Index Template 中的设定
-
应用order高的Index Template中的设定,之前的设定会被覆盖
-
应用创建索引时,用户所指定的Settings和Mappings,并覆盖之前模板中的设定
-
什么是Dynamic Template
-
根据ElasticSearch识别的数据类型,结合字段名称,来动态设定字段类型
-
所有的字符串类型都设定成Keyword,或者关闭keyword字段
-
is开头的字段都设置成boolean
-
long_ 开头的都设置成long类型
-
Dynamic Template
-
Dynamic Template是定义在某个索引的Mapping中
-
Template有一个名称
-
匹配规则是一个数组
-
为匹配到字段设置Mapping
PUT my_index
{
"mappings": {
"dynamic_templates": [
{
"full_name": {
"path_match": "name.*",
"path_unmatch": "*.middle",
"mapping": {
"type": "text",
"copy_to": "full_name"
}
}
}
]
}
}
课程Demo
#数字字符串被映射成text,日期字符串被映射成日期
PUT ttemplate/_doc/1
{
"someNumber":"1",
"someDate":"2019/01/01"
}
GET ttemplate/_mapping
#Create a default template
PUT _template/template_default
{
"index_patterns": ["*"],
"order" : 0,
"version": 1,
"settings": {
"number_of_shards": 1,
"number_of_replicas":1
}
}
PUT /_template/template_test
{
"index_patterns" : ["test*"],
"order" : 1,
"settings" : {
"number_of_shards": 1,
"number_of_replicas" : 2
},
"mappings" : {
"date_detection": false,
"numeric_detection": true
}
}
#查看template信息
GET /_template/template_default
GET /_template/temp*
#写入新的数据,index以test开头
PUT testtemplate/_doc/1
{
"someNumber":"1",
"someDate":"2019/01/01"
}
GET testtemplate/_mapping
get testtemplate/_settings
PUT testmy
{
"settings":{
"number_of_replicas":5
}
}
put testmy/_doc/1
{
"key":"value"
}
get testmy/_settings
DELETE testmy
DELETE /_template/template_default
DELETE /_template/template_test
#Dynaminc Mapping 根据类型和字段名
DELETE my_index
PUT my_index/_doc/1
{
"firstName":"Ruan",
"isVIP":"true"
}
GET my_index/_mapping
DELETE my_index
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"
}
}
}
]
}
}
DELETE my_index
#结合路径
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
相关阅读