elasticsearch中模板的创建和使用

news/2024/8/26 16:21:21 标签: elasticsearch, 大数据

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的内容

{
“mytest-1”: {
“aliases”: {},
“mappings”: {
“_source”: {
“enabled”: false
},
“properties”: {
“created_at”: {
“type”: “date”,
“format”: “EEE MMM dd HH:mm:ss Z yyyy”
},
“host_name”: {
“type”: “keyword”
}
}
},
“settings”: {
“index”: {
“routing”: {
“allocation”: {
“include”: {
“_tier_preference”: “data_content”
}
}
},
“number_of_shards”: “2”,
“provided_name”: “mytest-1”,
“creation_date”: “1721125235810”,
“number_of_replicas”: “1”,
“uuid”: “viz9-DEpQheYzJkIlatg6A”,
“version”: {
“created”: “8500010”
}
}
}
}
}

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

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

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

查看索引内容

GET  mytest-2

内容

{
“mytest-2”: {
“aliases”: {},
“mappings”: {
“_source”: {
“enabled”: false
},
“properties”: {
“created_at”: {
“type”: “date”,
“format”: “EEE MMM dd HH:mm:ss Z yyyy”
},
“host_name”: {
“type”: “keyword”
}
}
},
“settings”: {
“index”: {
“routing”: {
“allocation”: {
“include”: {
“_tier_preference”: “data_content”
}
}
},
“number_of_shards”: “2”,
“provided_name”: “mytest-2”,
“creation_date”: “1721125273084”,
“number_of_replicas”: “3”,
“uuid”: “oWTDY9RLSterXOizHzGzRw”,
“version”: {
“created”: “8500010”
}
}
}
}
}

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

另外创建一个索引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”: {
“aliases”: {},
“mappings”: {
“_source”: {
“enabled”: false
},
“properties”: {
“created_at”: {
“type”: “date”,
“format”: “EEE MMM dd HH:mm:ss Z yyyy”
},
“delete_at”: {
“type”: “date”,
“format”: “EEE MMM dd HH:mm:ss Z yyyy”
},
“host_alias”: {
“type”: “keyword”
},
“host_name”: {
“type”: “keyword”
}
}
},
“settings”: {
“index”: {
“routing”: {
“allocation”: {
“include”: {
“_tier_preference”: “data_content”
}
}
},
“number_of_shards”: “2”,
“provided_name”: “mytest-3”,
“creation_date”: “1721125461890”,
“number_of_replicas”: “1”,
“uuid”: “5Es-Ht1MQR-Yg1SPEeWr4w”,
“version”: {
“created”: “8500010”
}
}
}
}
}

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

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


http://www.niftyadmin.cn/n/5558208.html

相关文章

CH15-DOM元素属性

CH15-DOM 本章目标 了解DOM模型的概念和结构掌握如何使用DOM获取元素掌握如何使用DOM操作属性 一、DOM概述 1.1 什么是DOM? 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model) 1.2DOM的结构 DOM把文档…

智慧煤矿:AI视频智能监管解决方案引领行业新变革

随着科技的飞速发展,人工智能(AI)技术已经渗透到各个行业,为传统产业的转型升级提供了强大的动力。在煤矿行业中,安全监管一直是一个重要的议题。为了提高煤矿的安全生产水平,降低事故发生率,智…

【Web服务与Web应用开发】【C#】VS2019 创建ASP.NET Web应用程序,以使用WCF服务

目录 0.简介 1.环境 2.知识点 3.详细过程 1)创建空项目 2)添加Web表单 3)使用Web表单的GUI设计 4)添加服务引用 5)在Web的button函数中调用服务,获取PI值 6)测试 0.简介 本文属于一个…

Win10+Docker配置TensorRT环境

1.Docker下载和安装 Docker下载:Install Docker Desktop on Windows Docker安装: 勾选直接下一步就行,安装完成后需要电脑重启。 重启后,选择Accept—>Continue without signing in—>skip survey. 可以进入下面页面,并且左下角是绿色的,显示e…

自动化回滚的艺术:Conda包依赖的智能管理策略

自动化回滚的艺术:Conda包依赖的智能管理策略 在复杂的Python项目中,依赖管理往往成为开发过程中的一大挑战。Conda作为Anaconda发行版中的包管理器,提供了强大的依赖管理功能,包括自动回滚机制,以确保环境的稳定性。…

使用mysql shell搭建MGR

准备环境 资源有限只需要准备一台Linux主机 腾讯云主机159.75.158.18 (1)规划部署 主机端口配置文件数据目录159.75.158.183381/etc/my3381.cnf/data/3381/data159.75.158.183382/etc/my3382.cnf/data/3382/data159.75.158.183383/etc/my3383.cnf/dat…

【iOS】——ARC源码探究

一、ARC介绍 ARC的全称Auto Reference Counting. 也就是自动引用计数。使用MRC时开发者不得不花大量的时间在内存管理上,并且容易出现内存泄漏或者release一个已被释放的对象,导致crash。后来,Apple引入了ARC。使用ARC,开发者不再…

Brown模型,在概率论中,通常指的是布朗运动(Brownian Motion)的数学模型。

13. Brown模型解释与Python代码示例 一、模型解释 Brown模型,在概率论中,通常指的是布朗运动(Brownian Motion)的数学模型。布朗运动是一种随机过程,它描述了微小粒子在液体或气体中由于与周围分子的随机碰撞而产生的…