一、solr管理员命令
我们在生产环境时,需要管理员维护solr服务器的数据信息,,那么这里有3种主要手段:
1.curl方式
curl http://localhost:8080/solr/update --data-binary "
#删除完后,要提交
curl http://localhost:8080/solr/update --data-binary "
2、用自带的 post.jar,在 /usr/local/solr/solr-5.3.2/example/exampledocs 目录下:
java -Ddata=args -jar post.jar "
#怎么使用 post.jar 查看帮助
java -jar post.jar -help
3、在solr客户端,访问你的索引库(我认为最方便的方法)
1)documents type 选择 XML
2)documents 输入下面语句
*:*
二、案例实战说明
2.1全量同步
我们已经对solr又来一个初步的认知,那么我们异步在真实的项目中如何去对solr进行使用呢?
一般来说我们会从数据库中把相关信息加载到solr中,然后定时去于后台数据库进行同步
solr有2种同步手段:1、增量同步 2、全量同步
举个例子:
第一步:创建数据库solr,然后创建一张表solr_test,插入几条数据即可
第二步:编辑/usr/local/solr/solr-5.3.2/example/example-DIH/solr/solr/conf/solrconfig.xml
添加一下内容
data-config.xml
第三步在solrconfig.xml 同级的目录下新增data-config.xml并且加入如下内容
说明:这里使用了一个${dataimporter.request.id},这个是参数,后面在做数据导入时,会使用到,以此条件为基准读数据。
第四步:添加jar包到tomcat目录中。
将/usr/local/solr/solr-5.3.2/dist目录下的solr-dataimporthandler-5.3.2.jar、solr-dataimporthandler-extras-5.3.2.jar复制到tomcat的/usr/local/tomcat/apache-tomcat-7.0.29/webapps/solr/WEB-INF/lib文件夹中,当然,也包括mysql的jdbc jar包:mysql-connector-java-5.1.44-bin.jar
cp /usr/local/solr/solr-5.3.2/dist/solr-dataimporthandler-extras-5.3.2.jar /usr/local/tomcat/apache-tomcat-7.0.29/webapps/solr/WEB-INF/lib
cp /usr/local/solr/solr-5.3.2/dist/solr-dataimporthandler-5.3.2.jar /usr/local/tomcat/apache-tomcat-7.0.29/webapps/solr/WEB-INF/lib
第五步:编辑/usr/local/solr/solr-5.3.2/example/example-DIH/solr/solr/conf/schema.xml
配置文件,去把数据库里面有的字段,添加到schema.xml中,如果有则无需配置。
第六步:进行数据库访问授权操作,本地的mysql需要得到授权:
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;
使用命令:telnet IP 端口 试着连接数据库
这样就表示已经连接上mysql了
第七步:统一linux服务器时间与windows服务器时间
由于我这边的mysql是在windows系统中,solr在虚拟机内,因此为了同步功能,需要将linux的系统时间与Windows的系统时间保持一致
使用命令:date -s
date -s "2018-11-02 15:58:33"
现在我们开始导入数据
我们再次查询数据已经导入
在/usr/local/solr/solr-5.3.2/example/example-DIH/solr/solr/conf文件夹下有一个dataimport.properties。该文件记录了最后一次导入的时间,这里的时间用的是linux的时间
所以我们在需要将solr服务器的时间和mysql服务器的时间相对应
假如我在数据库新增了一条数据
PS:
我们这个时候可以不通过管控台直接使用命令,这样的方式和通过管控台点击按钮的产生的结果是一样的
http://192.168.46.143:8080/solr/solr/dataimport?command=full-import&clean=
true&commit=true&wt=json&indent=true&verbose=false&optimize=false&debug=false&id=1
我们再次查看dataimport.properties。我们的更新时间变了,数据也多了一条
二、增量同步
我们实际工作中,我们第一次导入数据需要全量导入,那么全量以后,我们则需要进行增量导入,增量导入的标准就是数据库中的最后更新时间update_at字段,这个时间需要和我们看到的dataimport.properties里面的last_index_time进行对比来进行增量同步
在这里,我们需要去修改我的data-config.xml文件,修改之前先了解几个概念
query:查询数据库符合条件的记录
deltaQuery:增量索引查询主键ID
deltaImportQuery:增量索引查询导入的数据
deletedPkQuery:增量缩影删除主键ID
然后我修改data-config.xml文件
并在数据库中添加1条数据,他的最后更新时间大于dataimport.properties的last_index_time时间
下面我们进行增量同步
这里就多了一条记录了
那在平时工作过程中,我们不可能定时地来控制台进行点击按钮进行增量同步的操作,那么我们可以通过程序定时访问URL的方式来进行增量操作,或者在linux里面使用crontab定时执行调用增量地址(这里注意command=delta-import而不是full-import),访问地址
http://192.168.46.143:8080/solr/solr/dataimport?command=delta-import&clean=
false&commit=true&wt=json&indent=true&verbose=false&optimize=false&debug=false