es之index template 与dynamic template

一,index template

根据实际业务场景预先创建需要的模板,这样在创建索引时不需要指定_setting和_mapping,对于需要频繁创建相同结构索引的场景是非常有用的。

可以创建多个 index_template,在创建索引时会根据pattern和order进行匹配和合并。

以下面的两个模板为例:

模板1:

PUT _template/default_template
{
   "index_patterns":["*"],
   "order":0,
   "version":1,
   "settings":{
     "number_of_shards":1,
     "number_of_replicas":2
   }
}

模板2:

PUT _template/test_template
{
   "index_patterns":["test*"],
   "order":1,
   "version":1,
   "settings":{
     "number_of_shards":3,
     "number_of_replicas":2
   },
   "mappings":{
     "date_detection":false,--注意这里,时间类型推断被关闭
     "numeric_detection":true
   }
}

下面的索引时会匹配到第一个索引,不会匹配到第二个索引。

POST default_template_test/_create/1
{
  "age":10,
  "name":"zhang",
  "day":"2019/01/01"
}
GET default_template_test/_search
GET default_template_test/_mapping
GET default_template_test/_settings

这个索引创建时会匹配到两个索引,对于重复的设置项,第二个索引会覆盖第一个索引。

因为匹配到第二个索引,所以date字段虽然具备时间格式,但不会被推断为date类型。
PUT test_template/_doc/1
{
  "age":10,
  "date":"2010/01/01"
}

GET test_template/_mapping
GET test_template/_settings

二,dynamic template

dynamic template 是针对某个具体的索引来设定的,即在创建某个具体的索引时指定。

如下,这个dynamic template设置值如果是is开头的,则匹配为bool类型。如果是string类型,匹配为keyword类型。

PUT dynamic_template_test4
{
  "mappings": {
    "dynamic_templates":[
         {
           "match_is_boolean":{
             "match_mapping_type":"string",
             "match":"is*",
             "mapping":{
               "type":"boolean"
             }
           }
         },
         {
           "match_is_keyword":{
             "match_mapping_type":"string",
             "mapping":{
               "type":"keyword"
             }
           }
         }
      ]
  }
}

这个dynamic template设置若值是复杂类型,以name开头且不以middle结尾则copy到full_name中。

PUT dynamic_template_test3
{
  "mappings": {
    "dynamic_templates":[
         {
           "full_name":{
             "path_match":"name.*",
             "path_unmatch":"*.middle",
             "mapping":{
               "type":"text",
               "copy_to":"full_name"
             }
           }
         }
      ]
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小手追梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值