package com.yupi.yuso.job.once; import com.yupi.yuso.esdao.PostEsDao; import com.yupi.yuso.model.dto.post.PostEsDTO; import com.yupi.yuso.model.entity.Post; import com.yupi.yuso.service.PostService; import java.util.List; import java.util.stream.Collectors; import javax.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.boot.CommandLineRunner; /** * 全量同步帖子到 es * * @author 程序员鱼皮 * @from 编程导航知识星球 */ // todo 取消注释开启任务 //@Component @Slf4j public class FullSyncPostToEs implements CommandLineRunner { @Resource private PostService postService; @Resource private PostEsDao postEsDao; @Override public void run(String... args) { List postList = postService.list(); if (CollectionUtils.isEmpty(postList)) { return; } List postEsDTOList = postList.stream().map(PostEsDTO::objToDto).collect(Collectors.toList()); final int pageSize = 500; int total = postEsDTOList.size(); log.info("FullSyncPostToEs start, total {}", total); for (int i = 0; i < total; i += pageSize) { int end = Math.min(i + pageSize, total); log.info("sync from {} to {}", i, end); postEsDao.saveAll(postEsDTOList.subList(i, end)); } log.info("FullSyncPostToEs end, total {}", total); } }