一、Solr5.1安装
1、官方下载链接
2、下载上传压缩包到Linux服务器
[root@hadoop ~]# mkdir -p /hadoop/solr
通过sftp上传压缩包至此目录:
[root@hadoop solr]# ls
solr-5.1.0.tgz
[root@hadoop solr]# tar -zxvf solr-5.1.0.tgz
......
[root@hadoop solr]# mv solr-5.1.0/* .
[root@hadoop solr]# ls
bin CHANGES.txt contrib dist docs example licenses LICENSE.txt LUCENE_CHANGES.txt NOTICE.txt README.txt server solr-5.1.0.tgz
3、接下来创建第一个core
[root@hadoop ~]# cd /hadoop/solr/server/
[root@hadoop server]# ls
contexts etc lib logs README.txt resources scripts solr solr-webapp start.ini start.jar webapps
[root@hadoop server]# cd solr
[root@hadoop solr]# mkdir core_one
[root@hadoop solr]# ls
configsets core_one README.txt solr.xml zoo.cfg
复制一份官方基础配置到core_one下:
[root@hadoop core_one]# cp -r /hadoop/solr/server/solr/configsets/sample_techproducts_configs/conf /hadoop/solr/server/solr/core_one/
4、启动solr
[root@hadoop ~]# cd /hadoop/solr/
[root@hadoop solr]# ./bin/solr start -p 8983
启动后直接访问页面:
http://192.168.1.66:8983/solr/#/
--ip根据自己改
在solr页面中点击core admin-->add core 增加一个core
增加完毕,就有一个新的core了:
二、导入Oracle数据
0、要导入的Oracle库表结构:
1、在core_one目录下新建一个lib文件夹用于存放需要的相关jar包:
[root@hadoop solr]# cd /hadoop/solr/server/solr/core_one/
[root@hadoop core_one]# mkdir lib
将solr-dataimporthandler*包从dist目录复制过来:
[root@hadoop core_one]# cd /hadoop/solr/dist/
[root@hadoop dist]# cp solr-dataimporthandler-* /hadoop/solr/server/solr/core_one/lib/
2将Oracle驱动包从Oracle数据库所在服务器复制过来:
[oracle@source ~]$ cd $ORACLE_HOME
[oracle@source db_1]$ cd jdbc/
[oracle@source jdbc]$ ls
lib Readme.txt
[oracle@source jdbc]$ cd lib/
[oracle@source lib]$ scp ojdbc6.jar root@192.168.1.66:/hadoop/solr/server/solr/core_one/lib/
root@192.168.1.66's password:
ojdbc6.jar 100% 2675KB 2.6MB/s 00:00
3、从/hadoop/solr/example/example-DIH/solr/solr/conf复制一份solr-data-config文件到core-one/conf下:
[root@hadoop dist]# cp /hadoop/solr/example/example-DIH/solr/solr/conf/solr-data-config.xml /hadoop/solr/server/solr/core_one/conf/
4、开始编辑配置文件
先编辑solrconfig.xml文件:
[root@hadoop conf]# cd /hadoop/solr/server/solr/core_one/
[root@hadoop core_one]# vim conf/solrconfig.xml
添加如下代码:
<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">solr-data-config.xml</str>
</lst>
</requestHandler>
因为我们要导入oracle库,所以还要在配置文件中添加jar包路径:
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
<lib dir="./lib/" regex="ojdbc6.jar" />
保存退出,接下来修改solr-data-config.xml文件:
[root@hadoop core_one]# vim conf/solr-data-config.xml
覆盖添加内容如下:
<dataConfig>
<dataSource type="JdbcDataSource" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@//192.168.1.6:1521/orcl" user="scott" password="tiger"/>
<document name="Info" pk="empno">
<entity name="zpxx" transformer="ClobTransformer" pk="empno" query="SELECT empno, ename from emp">
<field column="empno" name="empno" />
<field column="ename" name="ename" />
</entity>
</document>
</dataConfig>
保存退出,接下来修改schema.xml文件:
首先将id字段的配置改成下面:
<field name="id" type="string" indexed="true" stored="true" multiValued="false" />
其次加入我们需要查询的两个字段:
<field name="ename" type="string" indexed="true" stored="true" />
<field name="empno" type="string" indexed="true" stored="true" required="true" multiValued="false" />
然后将
<uniqueKey>id</uniqueKey>
改成
<uniqueKey>empno</uniqueKey>
保存退出,至于为什么这么改,看后面遇到的问题及解决方法。
5、重启solr
cd /hadoop/solr
./bin/solr stop
./bin/solr start -p 8983
6、导入数据
进入solr的管理页面:
entity部分有我们设置的zpxx了,现在执行execute:
执行成功后右上角会显示执行的结果,导入完成,现在做查询测试:
能够正常查询出来数据,简单导入完成。
三、过程中遇到的问题
一开始导入的时候一直hang在那不动,后来通过查看logging页面报错:
org.apache.solr.common.SolrException: Document is missing mandatory uniqueKey field: id
at org.springframework.data.solr.core.SolrTemplate.execute(SolrTemplate.java:145)
at org.springframework.data.solr.core.SolrTemplate.saveBean(SolrTemplate.java:184)
at org.springframework.data.solr.core.SolrTemplate.saveBean(SolrTemplate.java:178)
at com.hbsi.TestSolrTemplate.testAddList(TestSolrTemplate.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
。。。。。。
于是翻了下schema.xml的配置文档:
配置文件介绍中已经说了问题的主要原因是schema配置文件中存在
<uniqueKey>id</uniqueKey>
和id字段如果不做主键,需要将required="true"去掉。
所以修改方式为:
1、将uniqueKey修改为你导入solr的字段
2、取消ID的required=true,修改为指定的字段即可
最后结果如上截图及配置。