Linux Solr5.1安装及导入Oracle数据库表数据

一、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 [email protected]:/hadoop/solr/server/solr/core_one/lib/
[email protected]'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,修改为指定的字段即可
最后结果如上截图及配置。

发布了27 篇原创文章 · 获赞 33 · 访问量 23万+

猜你喜欢

转载自blog.csdn.net/qq_28356739/article/details/104172342
今日推荐