0
点赞
收藏
分享

微信扫一扫

Elasticsearch在Windows环境下的优雅安装与部署指南

颜娘娘的碎碎念 2024-07-24 阅读 23

template是es集群内快速生成批量索引的一种快捷方式。
官方解释: 模板是一种在索引创建时配置索引的方法。

7.x之后ES支持两种模板创建方式,一种是传统的或者叫普通的创建方式,即在一次请求中指定 mappings, settings, and aliases等模板的内容; 另一种component类型,可以以模板式分多次配置mappings, settings, and aliases等内容,且一个模块可被多个索引模板引用。

这里主要为探究模板是如果发生作用的,使用传统模式创建索引模板。

在系统内创建一个索引模板my_template

PUT _template/my_template
{
  "index_patterns": ["mytest*"],
  "settings": {
    "number_of_shards": 2,
    "number_of_replicas": 1
  },
  "mappings": {
    "_source": {
      "enabled": false
    },
    "properties": {
      "host_name": {
        "type": "keyword"
      },
      "created_at": {
        "type": "date",
        "format": "EEE MMM dd HH:mm:ss Z yyyy"
      }
    }
  }
}

之前一直在迷惑es中如何通过索引模板来快速生成索引,以及索引模板如何约束新创建的索引。

索引模板创建完成后

创建一个索引,索引名要能匹配索引模板中"index_patterns" 所指定的值,然后在创建出来的索引如果没有显示的声明,则所有配置都会与索引模板的设置保持一致。

参考下面的例子:

#创建一个索引
PUT mytest-1
GET mytest-1

索引mytest-1的内容

在创建索引时未指定任何内容,自动应用了模板的settings和mapping; 避免每次索引创建时都需要声明settings和字段映射; 或者约束自动创建索引的mapping和setting。

现次创建一个索引,这次指定副本数为3

PUT /mytest-2
{
  "settings": {
    "index": {
      "number_of_replicas": 3
    }
  }
}

查看索引内容

GET  mytest-2

内容

因为创建索引时指定了索引副本数,指定的值覆盖了引用索引模板提供的值。

另外创建一个索引mytest-3,,增加两个字段

PUT /mytest-3
{
  "mappings": {
    "properties": {
      "host_alias": {
        "type": "keyword"
      },
      "delete_at": {
        "type": "date",
        "format": "EEE MMM dd HH:mm:ss Z yyyy"
      }
    }
  }
}

再次查看一下索引内容

索引mytest-3在模板的基础上,增加了两个字段,其他的配置与模板保持一致。

综上,索引模板的生效是索引在创建时,如果索引名匹配上了集群内模板的匹配规则,则创建索引时引用模板内指定的settings和mapping等内容; 如果匹配了多个模板刚根据优先级判断生效的值 ; 如果在索引创建时显示的指定字段或配置,最终索引的配置和字段是创建索引时指定的内容和模板内容的合集,如果与模板内的配置或字段一致,则创建索引时指定的内容优先级高覆盖模板指定的值。

举报

相关推荐

0 条评论