千家信息网

mysql导入数据到solr的方法

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,本文主要给大家介绍mysql导入数据到solr的方法,其所涉及的东西,从理论知识来获悉,有很多书籍、文献可供大家参考,从现实意义来讲,累计多年的实践经验可分享给大家。1 mysql导入数据到solr方
千家信息网最后更新 2025年01月21日mysql导入数据到solr的方法

本文主要给大家介绍mysql导入数据到solr的方法,其所涉及的东西,从理论知识来获悉,有很多书籍、文献可供大家参考,从现实意义来讲,累计多年的实践经验可分享给大家。

1 mysql导入数据到solr

方式一:创建项目,查询出数据,一条一条addsolr中;(不推荐)

方式二:通过配置复制数据到solr

以上已完成了在本地window8中对solr的部署,为solr添加了一个自定义的coredemo,并且引入了ik分词器。

那么该如何将本地的mysql的数据导入到solr中呢?

1.1 准备工作

1.1.1 准备数据源

mysql数据源:test库中的user表(7条数据),其中这个update_time字段是用于solr更新数据库数据的依据,表中必须得有这个字段。

SETFOREIGN_KEY_CHECKS=0;

------------------------------

-- Table structurefor user

------------------------------

DROP TABLE IFEXISTS `user`;

CREATE TABLE`user` (

`id` int(10) NOT NULL AUTO_INCREMENT,

`name` varchar(30) DEFAULT NULL,

`sex` int(1) DEFAULT NULL,

`title` varchar(200) DEFAULT NULL,

`insert_time` datetime DEFAULT NULL,

`update_time` datetime DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDBAUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

------------------------------

-- Records of user

------------------------------

INSERT INTO `user`VALUES ('1', '航三', '1', '有电脑','2017-05-02 15:40:19', '2017-05-03 15:40:22');

INSERT INTO `user`VALUES ('2', '理三', '1', '有电脑,生活就是游戏么。要努力啊', '2017-05-02 15:40:19', '2017-05-03 15:40:22');

INSERT INTO `user`VALUES ('3', '李四', '0', '准备工作完成之后就可以进行配置和操作了。', '2017-05-02 15:40:19', '2017-05-03 15:40:22');

INSERT INTO `user`VALUES ('4', '王五', '0', '这个demo主要是针对多图片上传时使用的,可以携带动态加载的参数。', '2017-05-02 15:40:19', '2017-05-0315:40:22');

INSERT INTO `user`VALUES ('5', '赵六', '1', 'demo里也有,多文件上传+预览功能。也可以自己去调U', '2017-05-25 15:43:03', '2017-05-25 15:43:07');

INSERT INTO `user`VALUES ('6', '周七', '0', '这个demo主要是针对多图片上传时使用的', '2017-05-02 15:43:23', '2017-05-11 15:43:26');

INSERT INTO `user`VALUES ('7', '李白', '1', '诗人','2017-05-02 15:43:23', '2017-05-02 15:43:25');

1.1.2 准备需要的jar

链接mysql驱动jarmysql-connector-java-5.1.14.jar(这个基本都有)

D:\solr-4.10.2\dist\solr-dataimporthandler-4.10.2.jar

1.1.3 准备配置

solr的解压文件目录中找到"D:\solr-4.10.2\example\example-DIH\solr\db\conf"下的db-data-config.xml文件到你的core(比如:

D:\solr-4.10.2\example\demo-solr\demo\confconf目录下,并更名为data-config.xml

详细配置如下:

url="jdbc:mysql://localhost:3306/test" user="root"password="123456"

batchSize="100" />

query="SELECTid,name,sex,title,insert_time,update_time FROM user"

deltaImportQuery="SELECTid,name,sex,title,insert_time,update_time FROM user whereid='${dataimporter.delta.id}'"

deltaQuery="SELECT id FROMuser where update_time > '${dataimporter.last_index_time}'">

deltaImportQuery:获取增量数据时使用的SQL增量导入时使用

deltaQuery:获取pkSQL增量导入时使用

注意查询条件的写法:${..},如在本例中:

${dataimporter.last_index_time}索引上次导入时间

${ dataimporter.delta.id}实体user查询结果中的id,也可以用${user.id}表示

关于data-config.xml详解,参考博文:

http://www.jianshu.com/p/91a5a0c35475

http://blog.csdn.net/boolbo/article/details/50352331

1.2 配置实现

注意:如果是solr是使用tomcat进行启动,只是相关的jar和配置文件放的位置不一样。配置是一致的。

1、 拷贝mysql-connector-java-5.1.14.jarsolr-dataimporthandler-4.10.2.jarsolrD:\solr-4.10.2\example\solr-webapp\webapp\WEB-INF\lib目录中;

2,在D:\solr-4.10.2\example\demo-solr\demo\conf目录下,更改solrconfig.xml配置文件。添加如下内容:

data-config.xml

3,在D:\solr-4.10.2\example\demo-solr\demo\conf目录下,更改schema.xml配置,配置相关字段:

id

4,重启solr应用,查看原有的数据:

还是原来的那些数据。

5,导入mysql数据到solr中:

选择Dataimport进行导入操作。

查询:

证明数据已经导入,并删除了原来的数据!

2 删除所有数据

Documents运行/update,指定typexml。先查询后删除:

语句为:

*:*

Submit,执行删除!

当然,上面说的是手动删除,如果要删除的数据很多,想在下一次自动同步数据的时候自动删除指定的数据该如何做呢?

2.1 条件删除solr数据(在增量导入数据的过程中删除)

场景:有一批要拍卖的店铺数据存储在solr中,拍卖的店铺数据有一个拍卖结束时间(endTime),当拍卖结束时间一到,这条存储在solr中的拍卖数据就没有意义了,想要删除这条存储在solr中的数据。

按照上面的手动删除也不是不可以,但这人工操作未免太扯了,到时间人工去solr中删除这条数据耗时又耗力,也不太现实。

解决办法就是:

data-config.xmlentity中添加:

deletedPkQuery="select id from shops where endTime < NOW()"

这一句,这句和entiyquery同级,目的是查询出所有店铺数据中结束时间小于当前时间的店铺id,

这个店铺id会和deltaQuery中收集到的id一并执行deltaImportQuery操作,只不过一个是添加数据,一个是删除数据。

注意:这个配置在导入数据成功后,无效果。只在导入过程中有效果!

3 性能优化

1、 将所有只用于搜索的,而不需要作为结果的field(特别是一些比较大的field)的stored设置为false

2、 将不需要被用于搜索的,而只是作为结果返回的fieldindexed设置为false

3、 删除所有不必要的copyField声明为了索引字段的最小化和搜索的效率;

4、 将所有的 text fieldsindex都设置成false,然后使用copyField将他们都复制到一个总的 text field上,然后进行搜索。

看了以上介绍mysql导入数据到solr的方法,希望能给大家在实际运用中带来一定的帮助。本文由于篇幅有限,难免会有不足和需要补充的地方,大家可以继续关注行业资讯板块,会定期给大家更新行业新闻和知识,如有需要更加专业的解答,可在官网联系我们的24小时售前售后,随时帮您解答问题的。

数据 配置 查询 店铺 文件 时间 目录 准备 拍卖 增量 字段 搜索 结果 存储 方法 一致 人工 只是 图片 就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 男朋友是国企软件开发工程师 网络安全知多少讲座总结 中国农业银行软件开发校招 读秀学术搜索的外文子数据库 多个微信小程序共用一个云数据库 杭州从容网络技术有限公司 三环软件开发面试 .数据库设计说明书怎么写 实时数据库哪个比较好 大学法制主题培训基地软件开发 湖北新一代软件开发价格服务标准 戴姆勒软件开发怎么样 mysql 数据库大小写 印记(深圳)网络技术 数据库异机备份 电脑两个数据库端口 本地代理服务器软件 安徽芜湖电信dns服务器 数据库系统推荐 2b2t服务器排名 阳高口碑好的网络安全质量服务 夏普电视服务器无法登录 计算机网络技术专业学习周报 崇川区质量网络技术诚信经营 满格信号显示无法连接服务器 连接数据库显示未处理 我的世界服务器金币怎么弄 英雄联盟服务器已满 云数据库和云服务器区别 互联网高科技公司定义
0