首页 > 其他分享 >【ElasticSearch】索引生命周期管理(三) 避坑指南

【ElasticSearch】索引生命周期管理(三) 避坑指南

时间:2022-08-26 01:33:06浏览次数:65  
标签:audit index 生命周期 policy 避坑 索引 ElasticSearch test delete

背景

  主要是针对在使用索引生命周期的去管理索引的过程中,记录所踩到坑,避免同样的问题再次发生

问题

  1. 索引生命周期中设置各个阶段的市场以及索引rollover的时间不合理,导致整个索引数据被删除
   例如需求如下:
   业务需求:
      数据至少保存半年,删除半年前的数据
   生命周期设计:
      hot阶段--->delete阶段 即 180天后,当前索引文件的生命周期由hot阶段变为delete阶段,变为delete阶段的文件将被删除
      生命周期实现(错误)示范

PUT  _ilm/policy/test_ilm_policy
{
    "policy" : {
      "phases" : {
        "hot" : {
          "min_age" : "0ms",
          "actions" : {
            "rollover" : {
              "max_age" : "30d"
            },
            "set_priority" : {
              "priority" : 100
            }
          }
        },
        "delete" : {
          "min_age" : "180d",
          "actions" : {
            "delete" : { }
          }
        }
      }
    }
  }

      生命周期错误原因: 
      rollerover粒度过大,导致索引进入delete阶段会删除整个30天的索引的数据
      分析如下:
      当处于hot阶段的例如:索引A-0001经历了30天后,进行了rollover,意味着旧索引在过150天后,索引A-0001即将进入delete阶段,但是在索引A-0001中包含有第1天-第30天的数据,理论上只要删除第一天的数据即可,因此需要修改roller的时间粒度
   修改后的生命周期配置如下:(rollover粒度修改为1天)

PUT  _ilm/policy/test_ilm_policy_v2
{
    "policy" : {
      "phases" : {
        "hot" : {
          "min_age" : "0ms",
          "actions" : {
            "rollover" : {
              "max_age" : "1d"
            },
            "set_priority" : {
              "priority" : 100
            }
          }
        },
        "delete" : {
          "min_age" : "180d",
          "actions" : {
            "delete" : { }
          }
        }
      }
    }
  }

  2. 初始索引设置失败,导致索引被应用到生命周期和索引模板时,出现异常 The write index may be explicitly disabled using is_write_index=false
      索引模板如下:

PUT _template/test_template
{
    "order" : 0,
    "index_patterns" : [
      "text-audit*"
    ],
    "settings" : {
      "index" : {
        "lifecycle" : {
          "name" : "text_audit_ilm_policy_3",
          "rollover_alias" : "text-audit"
        },
        "number_of_shards" : "1",
        "number_of_replicas" : "0"
      }
    },
    "mappings" : {
      "text_audit_type" : {
        "_source" : {
          "enabled" : true
        },
        "properties" : {
          "bizType" : {
            "type" : "keyword"
          },
      .....省略
          }
        }
      }
    },
    "aliases" : { 
    
      }
    }
  }

    索引生命周期如下:

PUT  _ilm/policy/test_ilm_policy_v2
{
    "policy" : {
      "phases" : {
        "hot" : {
          "min_age" : "0ms",
          "actions" : {
            "rollover" : {
              "max_age" : "1d"
            },
            "set_priority" : {
              "priority" : 100
            }
          }
        },
        "delete" : {
          "min_age" : "180d",
          "actions" : {
            "delete" : { }
          }
        }
      }
    }
  }

    设置初始索引(错误)

PUT text-audit-0001
{
  "aliases": {
    "text-audit": {

    }
  }
}

    配置完成后整个逻辑应该
      创建索引test-audit-0001,且设置别名为test-audit,由于指定了索引模板test_template,因此这个索引会套用模板去设置对应的字段和设置,以及生命周期配置
      但是
      当索引进行rollover时,新索引为test-audit-0002,此时 test-audit-0002和test-audit-0001都拥有相同的别名 test-audit ,项目中也是使用别名操作,
      如果一个索引别名被应用到了多个索引,则必须制定有且一个索引的属性is_write_index=true,如果没制定该属性或指定多个相同别名的索引is_write_index=true ,则会出现异常
      The write index may be explicitly disabled using is_write_index=false
    正确的设置初始索引

PUT text-audit-0001
{
  "aliases": {
    "text-audit": {
       "is_write_index":true
    }
  }
}    

    分析:
      正确的设置初始索引test-audit-0001,test-audit-0001 进行rollerover为test-audit-0002时,索引将会应用到别名,并且将is_write_index=true传递给test-audit-0002,同时test-audit-0001索引中的is_write_index=true将会变为false


    

  

标签:audit,index,生命周期,policy,避坑,索引,ElasticSearch,test,delete
From: https://www.cnblogs.com/july-sunny/p/16626312.html

相关文章

  • vue3 基础-生命周期函数
    在vue中,生命周期函数可理解为"在某个时刻,会自动执行的函数".先直观感受一下图示.一共就八个:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-......
  • elasticsearch入门
    1.HTTP操作幂等性和非幂等性的概念:幂等通俗来说是指不管进行多少次重复操作,都是实现相同的结果。在REST风格的请求中,GET,PUT,DELETE都是幂等性操作,而POST不是。1.索引操......
  • 实战 ElasticSearch
    一、基础知识你会如何处理实时或准实时数据流?在大数据时代,有很多方案可以帮助你完成这项任务。接下来,我将通过一个系列的教程,我将利用Storm、Kafka、ElasticSearch逐步......
  • 数据篇(MongoDB+ElasticSearch+Minio+TiDB+MySQL+Redis)
    一. 简介1. MongoDB  2. ElasticSearch  3. Minio   4. TiDB  5. MySQL   6. Redis         二. 目录  ......
  • 【elasticsearch】elasticSearch数据库配置慢查询日志
    给elasticSearch引擎配置慢查询日志,可以实时监控搜索过慢的日志。虽然ElasticSearch以快速搜索而出名,但随着数据量的进一步增大或是服务器的一些性能问题,会有可能出现慢查......
  • 1.Elasticsearch介绍
    内容拷贝:https://blog.csdn.net/jiayoubaobei2/article/details/1258829861.Elasticsearch概述1.1开篇1.1.1结构化数据老师说扩展结构不方便,我也没明白哪里不方便,很方......
  • Elasticsearch进阶
    1.核心概念索引Index一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个......
  • maven标准目录结构、 Maven生命周期
    maven标准目录结构图解:  Maven生命周期图解: ......
  • vue 每次进入页面 生命周期
    生命周期1.vue有哪些生命周期函数有8个 beforeCreate created beforeMount mounted  beforeUpdate updated beforeDestroy destroyed2.一旦进入组件或......
  • Elasticsearch篇:Elasticsearch增、删、改、查
    目录一、Elasticsearch的文档增删查改(CURD)二、Elasticsearch之查询的两种方式三、term与match查询四、Elasticsearch之排序查询五、Elasticsearch之分页查询六、Elastics......