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类:
(将时间类的加上注解)
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();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具