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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章