xxl-job调用shell根据条件删除Es数据,在shell解析json

1  需求: 之前用xxljob做调度,在java代码写的逻辑,有时候逻辑改的时候代码要重新发版,所以改成shell脚本

 2 在对应发服务器部署执行器,我们一般是哪个服务调用xxljob 就用哪个服务对应的服务器做执行器

 3 创建任务 可以传递参数  比如我传递的是8 就代表删除8天前的数据

4 编写shell脚本

#!/bin/bash
echo "xxl-job: hello shell"

echo "脚本位置:$0"
echo "任务参数:$1"
echo "分片序号 = $2"
echo "分片总数 = $3"

#脚本的日志文件路径
CLEAN_LOG_DIR="/usr/local/xxl-job/sh"
CLEAN_LOG="/usr/local/xxl-job/sh/clean_es_log.log"

#创建日志文件目录
if [ ! -d ${CLEAN_LOG_DIR}  ];then
  mkdir -p ${CLEAN_LOG_DIR}
fi
#创建日志文件
if [ ! -f ${CLEAN_LOG}    ];then
  touch  ${CLEAN_LOG}
fi

#删除多少天以前的日志,假设输入8,意味着8天前的日志都将会被删除
DELDATE=$(date -d "$1 day ago" +%Y-%m-%d\ %H:%M:%S)
#转为时间戳
timeStamp=`date -d "$DELDATE" +%s` 
 #将DELDATE转换为时间戳,精确到毫秒 
currentTimeStamp1=$((timeStamp*1000+10#`date "+%N"`/1000000))
echo "-------毫秒值【 $currentTimeStamp1 】 -------"
echo "-------现在查询【 $DELDATE 】之前成功的回调日志 -------" 
#将日志输入到服务器做备份
echo "-------现在查询【 $DELDATE 】之前成功的回调日志 -------" >>${CLEAN_LOG}
echo "------开始删除推送成功日志,索引【 xxx】-------"
deletedata=$(curl -XPOST "http://xxxx/xxx/_delete_by_query" -H 'Content-Type: application/json' -d'
          {
              "query": {
                  "bool": {
                      "must": [{
                              "term": {
                                  "st": {
                                      "value": "true",
                                      "boost": 1.0
                                  }
                              }
                          },
                          {
                              "terms": {
                                  "t": [
                                      4,
                                      6,
                                      3,
                                      8,
                                      5,
                                      7,
                                      8,
                                      9,
                                      10,
                                      11,
                                      12
                                  ],
                                  "boost": 1.0
                              }
                          },
                          {
                              "range": {
                                  "endTime": {
                                      "from": null,
                                      "to": '${currentTimeStamp1}',
                                      "include_lower": true,
                                      "include_upper": true,
                                      "boost": 1.0
                                  }
                              }
                          }
                      ],
                      "adjust_pure_negative": true,
                      "boost": 1.0
                  }
              }
          }')
echo "------打印删除推送成功日志【 $deletedata 】-------"
echo "------打印删除推送成功日志【 $deletedata 】-------" >>${CLEAN_LOG}
# 解析json 正则
total=`echo $deletedata |grep -Po 'total[" :]+\K[^,"]+'`
echo  "此次共{$total}条成功推送数据"
count=`echo $deletedata |grep -Po '"deleted[" :]+\K[^,"]+'`
echo  "此次共删除{$count}条成功推送数据"
exit 0

 服务器没有安装python 也懒得到网上找解析json的脚本,json比较简单直接用的正则表达式

5 执行xxljob ,数据删除成功

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值