Elasticsearch(ES)模板(Templates)

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

图片

中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:

Web服务器

代理服务器

ZooKeeper

Kafka

RabbitMQ

Hadoop HDFS

Elasticsearch ES (本章节)

我们在前面介绍索引时候,直接向不存在的索引写入数据,会自动创建索引,这个创建的索引可能并不能满足需求,而且分片又无法调整。比如我们有的索引需要3分片2副本,有的索引需要5分片1副本。这个时候我们就可以通过定义不同的模板(Templates)来满足我们的需求。

Elasticsearch 模板(Template)是一种用于预先定义索引设置、映射(Mapping)和别名等配置的机制,能帮助用户在创建新索引时自动应用一致的规则,避免重复配置,同时确保索引结构的标准化。

1. 索引模板(Index Templates)

适用版本:Elasticsearch 7.x 及更早版本(8.x 中仍可使用,但推荐使用组件模板)。

组成:由 index_patterns(匹配索引名称的模式)、settings(索引设置)、mappings(字段映射)、aliases(别名)等组成。

curl -X PUT "localhost:9200/_index_template/logs_template" -H 'Content-Type: application/json' -d'
{
  "index_patterns": ["logs-*"], 
  "priority": 200,               # 
  "template": {
    "settings": {
      "number_of_shards": 3,
      "number_of_replicas": 2,
      "index.lifecycle.name": "logs_policy"  # 关联ILM策略
    },
    "mappings": {
      "properties": {
        "@timestamp": { "type": "date" },
        "message": { "type": "text" },
        "host": { "type": "keyword" }
      }
    },
    "aliases": {
      "all_logs": {}  # 为匹配索引添加别名
    }
  },
  "_meta": {
    "description": "Template for log indices"
  }
}
'

logs_template:模板的名字。

index_patterns:匹配所有以 logs- 开头的索引。

priority:优先级,数值越大优先级越高。

number_of_shards:命中以后的分区数量。

number_of_replicas:命中以后的副本数量。

index.lifecycle.name:生命周期策略(ILM)。

mappings:定义一些全局Mapping(手动创建索引时显式指定的 mappings > 模板中定义的 mappings > Elasticsearch 自动推断的动态映射)。

aliases:别名,搜索的时候可以代替所有模板创建的索引。

一句话总结就是所有以logs-*的索引默认是3分片,2副本,而不会是默认的1分片1副本。

在一般的情况下下ES的很多索引都会按照时间进行轮转,而我们创建不同的模板,就可以满足相同类型的索引都以固定分片和副本来创建。

2.组件模板(Component Templates)

    适用版本:Elasticsearch 7.8+ 及更高版本(8.x 推荐使用)。

    特点:可复用的配置片段,需通过索引模板引用组合使用,避免重复定义。

    定义一个组件模板(通用分片设置)。​​​​​​​

    {
      "component_template": {
        "name": "shard-settings",
        "settings": {
          "number_of_shards": 3,
          "number_of_replicas": 1
        }
      }
    }

    定义一个索引模板,引用组件模板。​​​​​​​

    {
      "index_template": {
        "name": "logs-template",
        "index_patterns": ["logs-*"],
        "composed_of": ["shard-settings"],  // 引用组件模板
        "mappings": {
          "properties": { "timestamp": { "type": "date" } }
        }
      }
    }

    运维小路

    一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

    关注微信公众号《运维小路》获取更多内容。

    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
    红包 添加红包
    表情包 插入表情
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值