3天前所有的历史索引操作方法

生产环境ES集群已切换为冷热架构,日志保留最近3天的索引在ssd节点就可以了,超过3天的索引可以迁移到warm节点了,如何通过shell脚本去实现呢?

当前我只有一个日志索引需要这样操作,索引的时间戳是2020.11.17这样的时间格式为结尾,先通过命令获取索引的时间戳,并按照时间由近到远排序

curl -s http://es:9200/_cat/indices|awk '{print $3}'|grep ssys-log|sort -r

接下来的思路是我要截取3天之后的时间戳,通过哪个命令可以实现呢?查阅了一些资料,发现tail比较适合,具体如下:

tail -n -3 data.txt   #获取文件最后3行数据tail -n +3 data.txt  #获取文件3到最后一行数据

显然tail -n +3 data.txt 获取文件3到最后一行数据,符合我当前的需求,修改下命令,添加获取3天的日期列表:

curl -s http://es:9200/_cat/indices|awk '{print $3}'|grep ssys-log|sort -r|tail -n +5

PS:tail -n +3 data.txt 是获取第三行开始到最后的,我们需要保留3天的索引,所以这里应该写+4,从第4行开始,这样就是保留了前3行的数据了,考虑容错多保留1天,所以这里我改为+5了。

有了列表,就可以写个简单的for循环了

#!/bin/bashindex=`curl -s http://es:9200/_cat/indices|awk '{print $3}'|grep ssys-log|sort -r|tail -n +5`for i in $index;do   echo $i;   curl -XPUT http://es:9200/$i/_settings -d '{     "settings": {        "index.routing.allocation.require.box_type": "warm"        }   }' ;   sleep 10;done

有些变量还是写死的,获取到的列表会重复操作put操作,此脚本还很粗糙,对于3天前的索引可以批量操作。

只针对特定4天前当天的索引操作方法

后期针对每天的定时任务,把4天前的索引迁移过去就可以了,也避免了上个脚本列表里的重复执行。

通过date +%Y.%m.%d -d "-4 days"命令我们可以获取4天前的日期格式,如下(今天是17号)

# curl http://es:9200/ssys-log-`date +%Y.%m.%d -d "-4 days"`?pretty{  "ssys-log-2020.11.13" : {    "aliases" : { },    "mappings" : { },    "settings" : {      "index" : {        "routing" : {          "allocation" : {            "require" : {              "box_type" : "warm"            }          }        },        "number_of_shards" : "3",        "provided_name" : "ssys-log-2020.11.13",        "creation_date" : "1605527177922",        "number_of_replicas" : "1",        "uuid" : "LMeHqQy-SWK2D4zsvAwTrg",        "version" : {          "created" : "5050299"        }      }    }  }}

现在我做个测试,关闭4天前的索引

curl -XPOST http://es:9200/ssys-log-`date +%Y.%m.%d -d "-4 days"`/_close?pretty# 查询下索引的状态curl -XGET http://es:9200/_cat/indices/ssys-log-`date +%Y.%m.%d -d "-4 days"`?h=statusclose

测试结果是符合设想的,这样设置一个定时任务,每天执行一次,就可以每次把4天前的索引关闭了。

calendar前推n天_Shell获取ES3天的索引列表进行迁移操作相关推荐

  1. Calendar类的小案例:获取任意年份的2月份有多少天

    Calendar类的小案例:获取任意年份的2月份有多少天 public class Demo3 {public static void main(String[] args) {//1.随机输入一个年 ...

  2. iOS获取已安装的app列表(私有库)+ 通过包名打开应用

    1.获取已安装的app列表 - (void)touss {Class lsawsc = objc_getClass("LSApplicationWorkspace");NSObje ...

  3. python获取当前进程id_Python进程,多进程,获取进程id,给子进程传递参数操作示例...

    本文实例讲述了Python进程,多进程,获取进程id,给子进程传递参数操作.分享给大家供大家参考,具体如下: 线程与线程之间共享全局变量,进程之间不能共享全局变量. 进程与进程相互独立  (可以通过s ...

  4. Python计算两个numpy数组的交集(Intersection)实战:两个输入数组的交集并排序、获取交集元素及其索引、如果输入数组不是一维的,它们将被展平(flatten),然后计算交集

    Python计算两个numpy数组的交集(Intersection)实战:两个输入数组的交集并排序.获取交集元素及其索引.如果输入数组不是一维的,它们将被展平(flatten),然后计算交集 目录

  5. Pandas获取数据列名称的列表(list):(column list)

    Pandas获取数据列名称的列表(list):(column list) 目录 Pandas获取数据列名称的列表(list):(column list) #仿真数据

  6. ASP.NET中gridview获取当前行的索引值

    在用GridView控件时,我们经常会碰到获取当前行的索引,通过索引进行许多操作.例如,可以获得当前行某一个控件元素:设置某一元素的值等等.下面结合实例介绍几种获得GridView当前行索引值的方法. ...

  7. Windows Store App JavaScript 开发:获取文件和文件夹列表

    在应用程序中有时可能需要获取用户库中的内容,以便执行相关的操作.如果要获取某个用户库中的内容,需要先获取到这个用户库,获得用户库可以通过Windows.Storage命名空间中的KnownFolder ...

  8. php 获取日期标签的值,在php中获取标签的选定索引值

    我试图从< select>中获取所选值在 PHP中标记,但我收到错误. 这就是我所做的, HTML Select Male Female PHP脚本 $Gender = $_POST[&q ...

  9. 获取计算机软件列表,获取计算机已安装软件列表解决方法

    获取计算机已安装软件列表 Dear all, 最近小弟在做一个应用程序,就是仿造360软件管家,获取计算机里已安装软件列表, 现思路如下,根据注册表路径: 针对x86系统,HKEY_LOCAL_MAC ...

最新文章

  1. WINDOWS下安装MYSQL—图文详解
  2. 机器学习/深度学习 问题总结及解答
  3. Python 如何调用 Java
  4. vue中两种路由跳转拼接参数
  5. python中字符串输出乱码怎么解决_Python字符串的encode与decode研究心得乱码问题解决方法(转)...
  6. [原创]java WEB学习笔记58:Struts2学习之路---Result 详解 type属性,通配符映射
  7. 巴菲特:我们会在中国找到机会
  8. 【Kettle】如何输出固定格式报表
  9. 产品经理与数据的恩怨情仇
  10. DAP -Link 仿真下载 STM32 教程
  11. android dex文件是什么,关于android:apk文件中classes.dex文件的作用
  12. PSP 2000 USB连接后无法显示记忆棒内容 解决办法
  13. HTML5期末大作业:山河旅行社网站设计——山河旅行社网站(5页) HTML+CSS+JavaScript 学生DW网页 出行 旅途 游玩
  14. Qt在mac上的字体
  15. 好趣艺术设计部落网页制作案例
  16. 第一个java程序(输出个人信息)
  17. 怎么裁剪视频?手把手教你裁剪
  18. git 命令 简单介绍
  19. Even if you get no applause, you should accept a curtain call gracefully and app
  20. 解析java实现模拟USB接口的功能

热门文章

  1. sqlserver查看用户名密码_php 连接sql server数据库
  2. php mvc和mvvm,mvvm模式和mvc模式的区别是什么
  3. Android开发之常见面试题Activity跳转生命周期变化
  4. Android开发之高斯模糊效果三行代码搞定附带CSDN源码请导入module
  5. HTML与CSS基础之子和后代元素选择器(八)
  6. java线程不执行_java线程池,阿里为什么不允许使用Executors?
  7. iOS 使用 MailCore2
  8. React Fiber源码逐个击破系列-scheduler
  9. React全栈之Instagram开源视频教程
  10. Spotify模式并非“敏捷涅磐”