MySQL迁移ES索引库

一、生成索引类型

1、根据MySQL中file类,构造索引类型。

​ 在这个项目中,需要被分词的字段不多,一个是文件内容,一个是文件标题,可以将他们共同封装到content字段那种,也可以分开设计字段,分别索引,所需要进行的操作很简单,但是有坑。

​ 我需要将后缀名为doc和docx的文件打开,获取其中所有信息。

​ 进行这个操作时,报错挺多的,百度后有的说是WPS文档不行,有的说新旧版本不兼容,有的说是缺少依赖,依赖需要成套使用,说的很玄乎。

​ 可惜时间太久了,忘记报错信息了,都是常见的报错,但是网上众说纷坛,有真有假,挨个尝试最终才解决,当时没有记录下来真是错过了一个亿。

​ 有关word,pdf,下载,预览,及相互转换及使用poi,itextpdf,jacob,freemarker模板引擎生成word,pdf,还有对文件的压缩,封档等等。这一系列涉及office的内容属于一个版块,这里就不多说了。

​ 2、使用ES的api操作ES库,导入ES库。

​ 自定义一个接口继承ElasticsearchRepository,这个接口继承了ElasticsearchCrudRepository,继续继承了PagingAndSortingRepository,继续继承了CrudRepository,继续继承了Repository…如下:
在这里插入图片描述
注意:while循环插入即可,一次插入一千条,两千条也可以。插入速度挺慢的,不进行任何优化,后期测试的时候,我插入近一百万数据,用了半个多小时,如果数据库数据非常多,可以使用多线程提高效率。

二、索引库更新问题

更新索引库有两种方法,定时导入和消息中间件。项目一期使用了定时导入,因为开始要求不高,但是后来客户反映,希望更新及时一点,就换用了消息中间件。

​ 可以看出来,仅仅写一个ES,但是真正写的时候,并不是写ES就OK的,不是说仅仅会一个ES,就能做出来全文检索,还有很多其他的技术也得会。

​ 一、定时导入。

​ 定时导入,只有两个操作。

​ 1、定时任务类上方增加@Component注解。

​ 2、定时任务类中,定时方法上方增加@Scheduled(cron = “0 0 2 * * ?”)注解。我设置的是每天两点更新。cron表达式,自己想什么时候更新自己写。

​ 二、消息中间件。

​ 消息中间件,其实也就是监听器,消息队列里,不停的监听自己想要的信息。

​ 逻辑为:文件上传后,发送消息,监听器监听到后,导入ES库。

​ 这就很及时了,这边刚上传,那边在知识库里就可以搜索到,ok。

​ 消息中间件后边再详细讲,又一个大东西。

猜你喜欢

转载自blog.csdn.net/numbbe/article/details/108513511