ES 实战索引模板

Posted 顧棟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES 实战索引模板相关的知识,希望对你有一定的参考价值。

索引模板

模板的主要作用:可以帮助简化创建索引的语句,将模板中的配置和映射应用到创建的索引中。

新建索引时,索引名称满足index_patterns条件的,将会使用索引模板中的配置和映射。index_patterns使用*进行通配,不支持复杂的正则。

indexPattern要求:

  • 不能包含空字符

  • 不能以_开头

  • 不能包含以下特殊字符

    \\ / ? " < > | , #
    

如果索引匹配了多个索引模板,将通过order,按升序逐个应用和覆盖相同的配置和映射,order默认值为0,如果多个模板的order一致,则模板应用顺序不可控。

模板的管理

创建&修改模板

创建修改模板语法一样,把修改后的模板在PUT或者POST一下。修改时,模板内容是全量覆盖的。

新建索引模板gudong_1

PUT _template/gudong_1

  "index_patterns": ["gudong*"],
  "order" : 0,
  "settings": 
    "number_of_shards": 1
  ,
  "mappings": 
    "_doc": 
      "properties": 
        "message": 
          "type": "keyword"
        ,
        /* 数据插入的时间 */
        "create_date": 
          "type": "date",
          "format": "yyyy-MM-dd HH:mm:ss"
        
      
    
  

创建索引gudong20211221001

PUT gudong20211221001

查询索引结果


    "gudong20211221001": 
        "aliases": ,
        "mappings": 
            "_doc": 
                "properties": 
                    "create_date": 
                        "type": "date",
                        "format": "yyyy-MM-dd HH:mm:ss"
                    ,
                    "message": 
                        "type": "keyword"
                    
                
            
        ,
        "settings": 
            "index": 
                "creation_date": "1640054016128",
                "number_of_shards": "1",
                "number_of_replicas": "1",
                "uuid": "TnVhs-7sQ3Wg-BuqSJUEmQ",
                "version": 
                    "created": "6070299"
                ,
                "provided_name": "gudong20211221001"
            
        
    

多模板应用

新建索引模板gudong_2

PUT _template/gudong_2

  "index_patterns": ["gudong*"],
  "order" : 2,
  "settings": 
    "number_of_shards": 1
  ,
  "mappings": 
    "_doc": 
      "properties": 
        "content": 
          "type": "keyword"
        
      
    
  

创建索引gudong20211221002

PUT gudong20211221002

查询索引结果,可以发现同时应用了模板gudong_1和gudong_2


    "gudong20211221002": 
        "aliases": ,
        "mappings": 
            "_doc": 
                "properties": 
                    "content": 
                        "type": "keyword"
                    ,
                    "create_date": 
                        "type": "date",
                        "format": "yyyy-MM-dd HH:mm:ss"
                    ,
                    "message": 
                        "type": "keyword"
                    
                
            
        ,
        "settings": 
            "index": 
                "creation_date": "1640054892925",
                "number_of_shards": "1",
                "number_of_replicas": "1",
                "uuid": "Ew8LYOJmRFWMFGs4doZ_Pg",
                "version": 
                    "created": "6070299"
                ,
                "provided_name": "gudong20211221002"
            
        
    

查询模板

查询所有的模板列表

GET _cat/templates?v&s=name

验证模板是否存在,通过HTTP状态码来判断, 200 表示存在,404 表示不存在。

HEAD _template/gudong_1

查询模板详细内容

GET _template/gudong_1,gudong_2

查询所有模板的详细内容

GET /_template

通配符查询

GET /_template/gudong_*

删除模板

单个模板删除

DELETE /_template/template_1

通配符删除

DELETE /_template/gudong_*

不支持多个模板名以逗号隔开的方式进行删除,不支持DELETE /_template/template_1,template_2

版本化模板

模板可以选择添加一个版本号,它可以是任何整数值,以简化外部系统对模板的管理。 version 字段是完全可选的,它仅用于模板的外部管理。 要取消设置版本,只需替换模板而不指定模板。

PUT /_template/template_1

    "index_patterns" : ["*"],
    "order" : 0,
    "settings" : 
        "number_of_shards" : 1
    ,
    "version": 123

直接查询版本

GET /_template/template_1?filter_path=*.version

  "template_1" : 
    "version" : 123
  

以上是关于ES 实战索引模板的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch实战(十六)-索引模板

solr分布式索引实战分片配置读取:工具类configUtil.java,读取配置代码片段,配置实例

es实战-分片分配失败解决方案

ES 索引模板和动态模板

ES实战如何规划索引

OpenGL ES之“深度测试”与“模板测试”的使用流程