一、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,修改爲指定的字段即可
最後結果如上截圖及配置。