索引模板

索引模板

索引模板允许您定义在创建新索引时自动应用的模板。模板包括 设置和映射 以及控制是否应将模板应用于新索引的简单模式模板。

模板仅在索引创建时应用。更改模板不会对现有索引产生影响,因此在您可以修改索引结构,如果想往后的索引模板也一致,需要通过删除新建模板。使用create index API时,作为create index调用的一部分定义的设置/映射将优先于模板中定义的任何匹配的设置/映射。

//创建索引模板
PUT _template/index_test_template//索引模板名
{
  "order":1,//索引模板排序,当一个索引同时匹配多个索引模板时,将匹配Order数值更大的一个模板
  "template": "index_test*",//指定index_test为前缀,在6.0版本以上,该字段改为"index_patterns": ["te*", "bar*"],并且支持多个匹配索引名。
  "settings": {//与平时建索引时的settings一样
    "number_of_replicas": 1,//副本数
    "number_of_shards": 2//分片数
  },
  "mappings": {//与平时建索引的mappings一样
    "test": {
      "dynamic": "strict",//关闭类型动态映射,当存在在插入或更新操作时,包含不存在的字段,将报错
      "properties": {
        "name": {
          "type": "text",//默认全文搜索时使用
          "analyzer": "ik_max_word",
          "fields": {//以不同方式索引相同字段,使用场景:match查询时直接使用:name字段,排序聚合时就可以使用name.keyword字段,当然可以定义多个field。
            "keyword": {
              "type": "keyword"//聚合或排序时使用:name.keyword
            }
          }
        },
        "age": {
          "type": "integer"
        }
      }
    }
  }
}

//查看索引模板
GET /_template/index_test_template
//删除索引模板
DELETE /_template/index_test_template

索引模板在官方中,没有找到可直接修改索引模板的命令方式,目前来说,只能通过删除,重建索引模板的方式,来修改索引模板。

索引模板使用场景:适用于按周期,按月、按天等需要创建相同结构的索引时,特别有效。直接在代码中插入文档,便会自动寻找匹配的索引模板,完成创建操作索引操作,无需定期计划去实现索引的创建过程。

最后讲下,mappings type中的dynamic,dynamic有三个值:

1.true,新检测到的字段将添加到映射中,自动的判断数据类型,并加入mappings中。

2.false,新检测到的字段将被忽略。这些字段不会被编入索引,因此无法搜索,但仍会出现在_source返回的匹配字段中。这些字段不会添加到映射中,必须显式添加新字段。

3.strict,如果检测到新字段,则抛出异常并拒绝该文档。必须将新字段显式添加到映射中。在实际开发中,为了避免出现,书写错误,导致创建新的字段,应该开启"dynamic": "strict",因为在索引中,一旦新增字段,我们是无法进行删除字段的,为了避免此情况的发生,可以通过此索引避免。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值