elasticsearch定时清理过期索引index
一、定时函数
每次更新完配置文件后,先清除定时函数。然后设置,每过5s执行一次清理函数
// 清除定时器
clearInterval(this.timeObj);
var config = this.getConfig();
var keep_time = config.keep_time;
var obj={
keep_time:keep_time,
type:"ops"
}
// 定时器定时每5s执行一次
this.timeObj = setInterval(this.clean,5000, obj);
二、获取过期时间
keep_time:单位天,为设置的索引保存时间,定位到过期时间
var date = new Date();
var expiration = new Date(date);
expiration.setDate(date.getDate() - keep_time);
// 过期时间
var expirationTime = expiration.getFullYear() + '/' + (expiration.getMonth() + 1) + '/' + expiration.getDate();
三、获取esClient
判定索引是否过期,并收集所有过期的索引。
const es=require("elasticsearch")
const esClient= new es.Client({
host:'127.0.0.1:9200',
log:'error'
})
module.exports=esClient
四、获取全部索引
获取所有索引
const getIndex = function getIndex(index) {
return esClient.indices.get({ index: index })
}
五、判定索引是否过期
判定索引是否过期,并收集所有过期的索引。
var indexs_delete = []
for (var index in results) {
// 索引时间2020.09.03
var dateStr = index.substring(index.length - 10, index.length)
// 索引时间 2020/09/03
var dateStr = dateStr.replace(/[.]/g, "\/")
// 过期时间判定是否过期
if (dateStr < expirationTime) {
indexs_delete.push(index)
}
}
六、删除过期索引
删除过期索引。
const indexDelete = function getIndex(index) {
return esClient.indices.delete({ index: index })
}
七、demo代码
vscode打开代码。在esClient打上断点,打开main.js,按f5运行
demo代码下载