elasticsearch定时删除过期索引index

tech2024-10-26  10

elasticsearch定时清理过期索引index

一、定时函数二、获取过期时间三、获取esClient四、获取全部索引五、判定索引是否过期六、删除过期索引七、demo代码

一、定时函数

每次更新完配置文件后,先清除定时函数。然后设置,每过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代码下载

最新回复(0)