Pārlūkot izejas kodu

新增定时任务删除逻辑删除的中台数据,每个小时执行一次

易涛 3 gadi atpakaļ
vecāks
revīzija
79d6d25f93

+ 6 - 0
src/main/java/com/persagy/apm/alarmservice/group/management/controller/GroupManagementController.java

@@ -17,6 +17,7 @@ import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -99,4 +100,9 @@ public class GroupManagementController {
     public CommonResult<List<GroupTreeInfoVO>> equipsGroupQuery(@Valid @RequestBody EquipIdListDTO equipIdListDTO){
         return ResultHelper.single(managementService.equipsGroupQuery(equipIdListDTO.getEquipIdList())) ;
     }
+
+    @Scheduled(cron = "0 0 * * * ?")
+    public void batchDelete(){
+       managementService.batchDelete();
+    }
 }

+ 8 - 0
src/main/java/com/persagy/apm/alarmservice/group/management/service/GroupManagementService.java

@@ -41,4 +41,12 @@ public interface GroupManagementService{
      * @return com.persagy.apm.alarmservice.group.management.model.vo.GroupTreeDetailVO
      */
     List<GroupTreeInfoVO> equipsGroupQuery(List<String> ids);
+
+    /**
+     * 定时任务删除valid为0的数据
+     * @author 易涛
+     * @date 2021/9/14 15:55
+     * @return void
+     */
+    void batchDelete();
 }

+ 18 - 0
src/main/java/com/persagy/apm/alarmservice/group/management/service/impl/GroupManagementServiceImpl.java

@@ -24,6 +24,9 @@ import org.elasticsearch.client.RequestOptions;
 import org.elasticsearch.client.RestHighLevelClient;
 import org.elasticsearch.index.query.BoolQueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
+import org.elasticsearch.index.query.TermQueryBuilder;
+import org.elasticsearch.index.reindex.BulkByScrollResponse;
+import org.elasticsearch.index.reindex.DeleteByQueryRequest;
 import org.elasticsearch.rest.RestStatus;
 import org.elasticsearch.search.SearchHit;
 import org.elasticsearch.search.SearchHits;
@@ -223,4 +226,19 @@ public class GroupManagementServiceImpl implements GroupManagementService {
             throw new RuntimeException("json文件有误",ioe);
         }
     }
+
+    @Override
+    public void batchDelete() {
+        DeleteByQueryRequest request = new DeleteByQueryRequest(INDEX_NAME);
+        //逻辑删除的数据直接从index中删除掉
+        request.setQuery(new TermQueryBuilder("valid", "0"));
+        //每次最多删除一万条数据
+        request.setSize(10000);
+        try {
+            BulkByScrollResponse resp = client.deleteByQuery(request, RequestOptions.DEFAULT);
+            System.out.println(resp);
+        }catch (IOException e){
+            throw new RuntimeException("删除elasticSearch失败",e);
+        }
+    }
 }