Elasticsearch7.X Rollover 滚动生成动态时间索引

使用场景:Elasticsearch每天生成一个索引存储操作日志,为了不每天修改存储索引名,即每天写到一个固定的索引别名下,使用es Rollover滚动生成索引。

一 . 添加模版

PUT _template/test_template
 {
          
   
    "index_patterns" : [    
      "test*"        # 正则,以此前缀的索引都依照此模版
    ],
    "settings" : {
          
   
      "index" : {
          
   
        "number_of_shards" : "3",
        "number_of_replicas" : "1",
        "mapping" : {
          
   
          "total_fields" : {
          
   
            "limit" : "1000"   # 最大字段数
          }
        }
      }
    },
    "mappings" : {
          
   
      "dynamic_templates" : [
        {
          
   
          "strings" : {
          
   
            "mapping" : {
          
   
              "type" : "keyword"
            },
            "match_mapping_type" : "string"
          }
        },
        {
          
   
          "integers" : {
          
   
            "mapping" : {
          
   
              "type" : "keyword"
            },
            "match_mapping_type" : "long"
          }
        },
        {
          
   
          "floats" : {
          
   
            "mapping" : {
          
   
              "type" : "keyword"
            },
            "match_mapping_type" : "double"
          }
        }
      ]
    },
     "aliases" : {
          
   
      "aliases_test" : {
          
    }    # 添加大别名  也可不添加 可在{}添加其他参数
    }
  }

二 . 手动创建索引

第一次需要手动创建索引,并添加一个固定的滚动别名,操作日志之后会固定往滚动别名中发送 注意:手动创建索引时 需要指定动态日期,后缀为6位以内数字格式

PUT %3Ctest-%7Bnow%2Fd%7D-000001%3E
{
          
   
  "aliases": {
          
   
    "test_rollover": {
          
           # 创建索引时指定滚动别名
    }
  }
}

%3Ctest-%7Bnow%2Fd%7D-000001%3E == <test-{now/d}-000001>

查看索引格式是否为指定格式 “provided_name” : “<test-{now/d}-000001>”

"number_of_shards" : "3",
        "provided_name" : "<test-{now/d}-000001>",
        "creation_date" : "1668700803060",
        "number_of_replicas" : "0",
        "uuid" : "4LXDZAhUTg20ivzmavEnxQ",
        "version" : {
          
   
          "created" : "7090399"

三 . Rollover滚动生成

POST /test_rollover/_rollover
    {
          
   
      "conditions": {
          
   
        "max_age": "0d",  # 0天
        "max_docs": 0,    # 0条文档
        "max_size": "0gb" # 0GB数据
      }
    }

手动触发滚动Rollover,符合三个条件中任意一条件即可触发Rollover 可编辑脚本定时调度触发Rollover

触发滚动后查看索引是否创建,是否自动切换别名

经验分享 程序员 微信小程序 职场和发展