elasticsearch 5.x 系列之四(索引模板的使用,详细得不要不要的)

本贴最后更新于 2291 天前,其中的信息可能已经天翻地覆

1,首先看一下下面这个索引模板

curl -XPUT "master:9200/_template/template_1?pretty" -H 'Content-Type: application/json' -d'  ---> 模板名字叫做template1
{
    "template" : "hello*",  -------------> 匹配的索引名字
    "order" : 0,       -------------> 代表权重,如果有多个模板的时候,优先进行匹配,值越大,权重越高
    "settings" : {
        "number_of_shards" : 1          -------> 主分片的设置
    },
    "aliases": {
        "alias_1" : {}        ------> 索引对应的别名
    },
    "mappings" : {              -----> 字段的映射
        "_default_": {               -----------------> 默认的配置
            "_source" : { "enabled" : false },     ------> 字段原始的具体值是否要存
            "_all": { "enabled":  false },          -----> 禁用_all 字段,
            "dynamic": "strict"            ----------> 只可以用定义的字段,关闭默认的自动推断数据类型
        },
        "type1" : {                   ----> 类型名字
            "_source" : { "enabled" : true },   ------> 字段具体的值是否要存
            "properties": {           ---------> 字段映射
                "@timestamp": {          -------> 具体的字段映射
                    "type": "date",           
                    "format": "strict_date_optional_time||epoch_millis"
                },
                "@version": {
                    "doc_values": true,
                    "index": "not_analyzed",
                    "type": "string"
                },
                "Guid": {
                    "doc_values": true,
                    "index": "not_analyzed",
                    "type": "string"
                },
                "LogLevel": {
                    "type": "long"
                }
            }
        }
    }
}
'

2,哦了,看完这个简单的模板之后,我们来注意看一下以下几点

注意 2.1:不要在一个索引中定义多个 type。

6.X 版本已经不支持,7.X 版本彻底不支持。
扩展问题:5.X 版本的父子文档实际实现中是一个索引中定义了多个 type,到了 6.X 中实现方式改变为:join 方式。

注意 2.2:将 Set _source 设置为 false。

假设你只关心度量结果,不是原始文件内容。
将节省磁盘空间并减少 IO。
比如,你可以把原始的数据存储在 mysql ,hbase 等其他地方,从 es 中得到 id 后,去相应的数据库中进行取数据
举例:

“_source”:{
“enabled”:false
},

注意 2.3:将_all 设置为 false。

假设你确切地知道你对哪个 field 做查询操作?
能实现性能提升,缩减存储。
举例:

“_all”:{
“enabled”:false },

注意 2.4:设置 dynamic = strict。

假设你的数据是结构化数据。
字段设置严格,避免脏数据注入。
举例:

“dynamic”:”strict”,

注意 2.5:使用 keyword 类型

假设你只关心完全匹配
提高性能和缩小磁盘存储空间
举例:

“CLF_CustomerID”:{
“type”:”keyword”
},

3, 索引模板的用途,一般是用在时间序列这样的索引中

3.1 概述

也就是说,如果你的索引,可以按照每周,或者每天进行建立索引,那么,索引模板的作用就来了。
你只要配置好索引模板,后面你就不用每次都要建立索引的映射了。这个糖果还是很好用的。

3.2 注意的点,索引模板一般配合索引别名一起使用,(下雨天,巧克力和音乐更配哦)

附上官方文档链接,不要太感谢:
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html

  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 226 关注
  • 模板
    21 引用 • 100 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...