mysql导入数据到solrcloud5
来源:互联网 发布:cs真实性 知乎 编辑:程序博客网 时间:2024/05/21 22:55
本文是用solr+jetty方式的环境下完成的。
一、全量导入
1、上传包到/opt/solr/server/solr-webapp/webapp/WEB-INF/lib,在集群中的每个节点上都执行,并且需要重启solr服务
solr-dataimporthandler-5.2.1.jarsolr-dataimporthandler-extras-5.2.1.jar注意:上述2个jar包在solr5.2.1的dist目录下mysql-connector-java-5.1.31.jar
2、在/opt/solr/server/solr/configsets/data_driven_schema_configs/conf/solrconfig.xml文件中配置如下代码段
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">mysql-config.xml</str> </lst></requestHandler>
3、在/opt/solr/server/solr/configsets/data_driven_schema_configs/conf/目录下创建mysql-config.xml
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.1.222:3306/test" user="root" password="123456"/> <document> <entity name="t_person" query="select id, name,sex,age from t_person"><!--t_person,要导入的表名--> <field column="id" name="id" /> <field column="name" name="name" /> <field column="sex" name="sex" /> <field column="age" name="age" /> </entity> </document></dataConfig>
4、在/opt/solr/server/solr/configsets/data_driven_schema_configs/conf/managed-schema文件中修改或者加入如下代码段
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /><field name="name" type="string" indexed="true" stored="true"/><field name="sex" type="string" indexed="true" stored="true"/><field name="age" type="int" indexed="true" stored="true"/>
5、mysql赋权
在win7控制台,输入mysql -u root,以root管理员身份登录mysql,然后执行:
grant all PRIVILEGES on *.* to 'root'@'192.168.1.240' identified by '123456';
二、增量导入
增量导入包括全量导入的功能,步骤也和全量导入一样,下面只描述和全量导入不一致的地方(mysql-config.xml)。
注意:需要增量导入数据到solr中,那么数据库表必须新增一个时间字段,这个字段需要和上次导入时间进行比较。
<dataConfig> <!--solrDB表示数据源名称,和entity中的dataSource对应,如果需要导入多个mysql库的数据时,需要配置多个数据源--> <!--<dataSource name="solrDB1" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.1.225:3306/test" user="root" password="123456"/>--> <dataSource name="solrDB" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.1.222:3306/test" user="root" password="123456"/> <document> <entity pk="id" <!--指明主键,必须和下面<field column="id" name="id" />中name="id" 这里一致,包括大小写,建议下面涉及到id的都和这里的id一致--> dataSource="solrDB" name="t_person" query="select id, name,sex,age,update_time from t_person" <!--表示根据id查询数据并导入solr,${dih.delta.id}这里一定要这么写,不这么写是否正确没有验证--> deltaImportQuery="select id, name,sex,age,update_time from t_person where ID= '${dih.delta.id}'" <!--根据更新时间大于上次导入时间查询需要导入的数据id,{dataimporter.last_index_time}这里一定要这么写,因为zookeeper中记录的上次更新时间就是last_index_time--> deltaQuery="select id from t_person where update_time > '${dataimporter.last_index_time}'" > <field column="id" name="id" /> <field column="name" name="name" /> <field column="sex" name="sex" /> <field column="age" name="age" /> <field column="update_time" name="update_time" /><!--新增字段--> </entity> <!-- <entity pk="id" dataSource="solrDB1" name="t_person" query="select id, name,sex,age,update_time from t_person" deltaImportQuery="select id, name,sex,age,update_time from t_person where ID= '${dih.delta.id}'" deltaQuery="select id from t_person where update_time > '${dataimporter.last_index_time}'" > <field column="id" name="id" /> <field column="name" name="name" /> <field column="sex" name="sex" /> <field column="age" name="age" /> <field column="update_time" name="update_time" /> </entity> --> </document></dataConfig>
4、在managed-schema文件中修改或者加入如下代码段
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /><field name="name" type="string" indexed="true" stored="true"/><field name="sex" type="string" indexed="true" stored="true"/><field name="age" type="int" indexed="true" stored="true"/><field name="update_time" type="date" indexed="true" stored="true"/>
三、定时增量导入(在增量基础上操作)
1、下载并上传solr-dataimportscheduler-1.1.jar包到/opt/solr/server/solr-webapp/webapp/WEB-INF/lib,在集群中的每个节点上都执行。(这个jar包在solr5.2.1中没有,需要在网上去下载)
2、在solrhome目录下(/var/solr/data)新建文件夹conf,并新建文件dataimport.properties,文件复制下面的就好,具体配置含义已给出注释
# to sync or not to sync # 1 - active; anything else - inactive # 这里的配置不用修改 syncEnabled=1 # which cores to schedule # in a multi-core environment you can decide which cores you want syncronized # leave empty or comment it out if using single-core deployment # 修改成你所使用的core,我这里是我自定义的core:simple syncCores=mycollection3 # solr server name or IP address # [defaults to localhost if empty] #这个一般都是localhost不会变 server=localhost # solr server port # [defaults to 80 if empty] # 安装solr的tomcat端口,如果你使用的是默认的端口,就不用改了,否则改成自己的端口就好了 port=8983 # application name/context # [defaults to current ServletContextListener's context (app) name] # 这里默认不改 webapp=solr # URL params [mandatory] # remainder of URL # 这里改成下面的形式,solr同步数据时请求的链接 params=/deltaimport?command=delta-import&clean=false&commit=true # schedule interval # number of minutes between two runs # [defaults to 30 if empty] #这里是设置定时任务的,单位是分钟,也就是多长时间你检测一次数据同步,根据项目需求修改 # 开始测试的时候为了方便看到效果,时间可以设置短一点 interval=1 # 重做索引的时间间隔,单位分钟,默认7200,即5天; # 为空,为0,或者注释掉:表示永不重做索引 reBuildIndexInterval=7200 # 重做索引的参数 reBuildIndexParams=/select?qt=/deltaimport&command=full-import&clean=true&commit=true # 重做索引时间间隔的计时开始时间,第一次真正执行的时间=reBuildIndexBeginTime+reBuildIndexInterval*60*1000; # 两种格式:2012-04-11 03:10:00 或者 03:10:00,后一种会自动补全日期部分为服务启动时的日期 reBuildIndexBeginTime=03:10:00
3、在各个节点上的/opt/solr-5.2.1/server/solr-webapp/webapp/WEB-INF目录下的web.xml文件中添加监听配置:
<listener> <listener-class> org.apache.solr.handler.dataimport.scheduler.ApplicationListener </listener-class> </listener>
4、最后重启solr服务
四、数据导入http方式的API:
http://host:port/solr/collection_name/dataimport?command=delta-import&clean=true&commit=true&optimize=true&debug=true&entity=xxxx
command: abort 强制取消(实验证明和status一样) delta-import 增量导入 full-import 全量导入 reload-config 重新加载数据导入相关配置文件(理论上而言没什么卵用,实验证明和status一样) status 获取数据导入相关状态信息 show-config 返回相关配置信息full-import/delta-import相关参数: clean 决定在建立索引之前,删除以前的索引,默认为true commit 决定这个操作之后是否要commit,默认为true debug 以debug的方式执行,默认为false entity 导入那个表里的数据,如果未填写,则导入所有表的数据 optimize 决定这个操作之后是否要优化,默认为true synchronous 是否同步方式进行
- mysql导入数据到solrcloud5
- mysql导入数据到mssql
- 导入大量数据到mysql
- Python 导入数据到mysql
- Mysql 数据 导入到 SqlServer
- postgresql数据导入到mysql
- MYSQL导入数据到TXT
- Oracle数据导入到Mysql
- postgresql数据导入到mysql
- 大批量导入数据到mysql
- EXCEL导入数据到mysql
- mysql数据导入到数据库
- mysql 数据导入到 mysql server
- MySql Excel数据导入到mysql
- NavicatforMySQL 数据导入从excel导入数据到mysql
- excel数据批量导入到Mysql数据库
- 批量数据从excel导入到mysql
- 导入导出mysql表数据到csv
- 游戏中的设计模式:原型模式
- java中其他修饰符
- Java 中的访问修饰符和内部类
- 今天第一篇
- list容器
- mysql导入数据到solrcloud5
- 4.nslookup
- Java 中的成员内部类
- OPENGL读取OBJ模型(包围盒、法向等计算)附加源码与资源下载页面
- # 新人浅谈对hibernate的懒加载的理解
- java开发环境安装配置
- 深度学习与自然语言处理 主要概念一览
- Java大数详解
- 简单粗暴地入门机器学习