add:新增lucence日志清理

This commit is contained in:
2024-05-24 17:48:11 +08:00
parent c19dbfe11d
commit b205002324

View File

@@ -0,0 +1,56 @@
package org.nl.system.service.quartz.task;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexCommit;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.*;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.BytesRef;
import org.nl.acs.AcsConfig;
import org.nl.config.lucene.config.LuceneAppender;
import org.nl.system.service.param.ISysParamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Component;
import java.nio.file.Paths;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @Author : TuQiang
* @create 2024/5/24 14:37
*/
@Slf4j
@Component
public class AutoCleanLucenceLog {
@Autowired
private ISysParamService paramService;
public void run() throws Exception {
IndexWriter writer = LuceneAppender.indexWriter;
//时间范围删除
Calendar calendar = Calendar.getInstance();
calendar.set(1970, 0, 1);
String startDate = DateUtil.format(calendar.getTime(), "yyyy-MM-dd HH:mm:ss.SSS");
Date date = new Date();
calendar.setTime(date);
int days = Integer.parseInt(paramService.findByCode(AcsConfig.AutoCleanDays).getValue());
//取反
int day = ~days + 1;
calendar.add(Calendar.DATE, day);
String endDate = DateUtil.format(calendar.getTime(), "yyyy-MM-dd HH:mm:ss.SSS");
TermRangeQuery termRangeQuery = new TermRangeQuery("logTime", new BytesRef(startDate), new BytesRef(endDate), true, true);
writer.deleteDocuments(termRangeQuery);
writer.close();
}
}