es批量分页导入数据

es批量分页导入数据

配置分页拦截器

/**
 * 分页拦截器
 *
 * @Name MybatisPlusConfig
 * @Author 86158
 * @Data 2022-08-10-19:48
 */
@Configuration
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        //1 创建MybatisPlusInterceptor
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        //2 添加分页拦截器
        PaginationInnerInterceptor itc = new PaginationInnerInterceptor();
        //分页参数合理化,当页码超过范围后,自动查询最后一页
        itc.setOverflow(true);

        mybatisPlusInterceptor.addInnerInterceptor(itc);


        return mybatisPlusInterceptor;
    }
}

pojo类:

(将时间类的加上注解)

image-20220918230302377

service层:

(注意的是查找器无条件,就是查找所有,发送请求是最后发送)

@Service
public class ItemService extends ServiceImpl<ItemMapper, Item> implements IItemService {
    @Autowired
    private RestHighLevelClient client;
    @Autowired
    private ItemMapper itemMapper;

    @Override
    public void prepareData() {
        List<Item> items = itemMapper.selectList(null);
        //获得总量
        int size = items.size();
        //计算页数
        int page = size % 2000 == 0 ? size / 2000 : size / 2000 + 1;
        int i = 0;
        //查找数据
        //LambdaQueryWrapper<Item> lqw = Wrappers.lambdaQuery(Item.class);
        while (i <= page) {
            Page<Item> itemPage = new Page<>(i, 2000);
            Page<Item> page1 = page(itemPage);
            List<Item> records = page1.getRecords();
            //创建请求
            BulkRequest request = new BulkRequest();
            for (Item record : records) {
                request.add(new IndexRequest("item")
                        .id(record.getId().toString())
                        .source(JSON.toJSONString(record), XContentType.JSON));
                //发送请求
            }
            try {
                client.bulk(request, RequestOptions.DEFAULT);
            } catch (IOException e) {
                e.printStackTrace();
            }
            i++;
        }
    }

controller层:

(该层只是调用,方法名自取)

    @GetMapping("/prepareData")
    public void prepareData() throws IOException {
        itemService.prepareData();
        //itemService.prepareData2();
    }
posted @   wzztg  阅读(450)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示