Solr單機部署和集群部署


用到的相關jar包:http://pan.baidu.com/disk/home#list/path=%2Fsolr

Solr目錄結構

Solr 目錄

 

Contrib :solr 為了增強自身的功能,所添加的擴展依賴包。

Dilst:solr build 過程時產生的jar包和war包,還有他的一些依賴包。

Docs: 文檔。

Example: 例子

                   Solr:配置了solr運行至的信息,是一個標准的solrhome目錄。

                            Collection1:solrcore目錄

                           Data: 該目錄是儲存了索引的目錄。

Multicore:可以配置多個solr實例。

Webapps: solr.war的目錄

Licenses :版本

Solrhome

從example中copy出solr到新的一個目錄,這就是一個solrhome了,可以改名。C:\QQDownload\Solrs\solr1\solrhome

Solrhome是一個目錄,是solr運行的主目錄,它包括多個solrcore目錄。Solrcore目錄中就是solr實例的運行配置文件和數據文件。

 

Solr容器

Solr部署到tomcat。

Solr需要運行在一個servlet容器,它默認提供了一個jetty容器。

 

把solrhome下webapps的solr.war復制到tomcat下的webapps目錄下,解壓並刪除該war包。

 

添加solr依賴包,從目錄solr-4.9.0\example\lib\ext 復制到 Tomcat 6.0-solr\webapps\solr\WEB-INF\lib

 

把solr-4.9.0 下的dist和contrib復制到solrhome\collection1\conf 下solrconfig.xml 中配置的相應路徑中

 

依賴包有log4j,需要添加lofg4j的配置文件solr-4.9.0\example\resources 到 Tomcat 6.0-solr\webapps\solr\WEB-INF\classes(該文件夾需手動添加)。

 

添加sorl和tomcat的關聯編輯 Tomcat 6.0-solr\webapps\solr\WEB-INF下的web.xml

添加映射關系,指定solrhome :<env-entry-value> C:\QQDownload\Solrs\solr1\solrhome </env-entry-value>

 

 

啟動tomcat 看是否有錯誤。

 

遇到了solrconf.xml 的路徑不對的問題,<lib dir="../../contrib/extraction/lib" regex=".*\.jar" />

<lib dir="../../dist/" regex="solr-cell-\d.*\.jar" /> 修改dir 路徑並從solr中復制contrilb和dlist目錄到相應的位置

 

http://localhost:8080/solr/#/~logging看到正常solr界面就說明安裝成功了。

 

 

 

Solr功能界面

分詞器是需要配置的。

 

 可以操作索引。 在solr中,修改或添加索引 都需要id主鍵。

 

 

配置多solrcore

多solrcore 配置:

Collection1,collection2

一個solr工程,配置多個solrcore 每個solrcore之間是相互獨立的,可以單獨對外提供服務。

類似於數據庫,一個數據庫可以后多個實例,如果有新需求,可以直接擴展。

 

多solrcore在管理索引文件時,可以進行分類管理。

 

使用solrcloud solr集群, 必須要建立多個solrcore。

 

復制solrhome下的collection1 到本目錄下,改名為collection2.

 

修改collection2下的core.properties 修改為collection2 就ok了。

 

重啟tomcat。

 ok。兩個solrcore 互相是獨立的。

 

 

Schema.xml

Solr 基本使用

 

C:\QQDownload\Solrs\solr1\solrhome\collection1\conf

Schema.xml 文件在solrcore中的conf目錄下,這個文件主要是配置域名及域的類型。

Solr 的域要先定義,后使用。

 

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />

Name:域名

Type:域的類型(也需要配置)

Indexed:是否索引

Stored:是否存儲

Required:是否必須一般id才設置。

multiValued:是否可以多值。如果設置為多值,里面的值就采用數組方式存儲。

 

 

<dynamicField name="*_i"  type="int"    indexed="true"  stored="true"/>

配置動態域

Name:域名,該域通過一個正則指定。

 

<uniqueKey>id</uniqueKey>

指定一個主鍵域。每個文檔中都應該有個唯一主鍵。

 <copyField source="cat" dest="text"/>

復制域

<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>

Source :源域

Dest:目標域   把源域的內容復制到目標域,目標域必須設置 multiValued="true"

 

 

 

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">

<analyzer type="index">

<tokenizer class="solr.StandardTokenizerFactory"/>

<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />

<!-- in this example, we will only use synonyms at query time

<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>

-->

<filter class="solr.LowerCaseFilterFactory"/>

</analyzer>

<analyzer type="query">

<tokenizer class="solr.StandardTokenizerFactory"/>

<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />

<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>

<filter class="solr.LowerCaseFilterFactory"/>

</analyzer>

</fieldType>

fieldType 配置域的類型

 

Name:域的類型的名稱 引用該類型時: type=” text_general”

Class:指定solr的類型

Analyzer:配置分詞器 type:index,query 索引,查詢分詞器

Tokenizer :分詞器

Filter :過濾器

 

配置中文分詞器IkAnalyzer

使用IkAnalyzer中文分詞器

把IkAnalyzer2012ff_u1.jar添加到tomcat下的 web-inf/lib目錄下  

tomcat-6.0.35\apache-tomcat-6.0.35-solr\webapps\solr\WEB-INF\lib

 

復制IkAnalyzer的配置文件和自定義詞典和停用詞典到sorl的classpath下

 

Copy到apache-tomcat-6.0.35-solr\webapps\solr\WEB-INF\classes下

 

配置fieldtype 指定使用中文分詞器。

打開C:\QQDownload\Solrs\solr1\solrhome\collection1\conf下的 scheme.xml文件

 

 

配置filed,使用中文分詞器的filedtype。

 

 

 

 

 

業務域

 

 

 

Id是主鍵,由於collection1的scheme已經有主鍵了。

 

 <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />

 

 

Dataimporthandler 插件

把數據從關系數據庫中查詢並導入到索引庫中。

solr-4.9.0\dist\ solr-dataimporthandler-4.9.0.jar

復制到

Solrs\solr1\contrib\dataimporthandler\lib

 

下載mysql-connector-java-5.1.7-bin

Mysql數據驅動包拷貝到

Solrs\solr1\contrib\db\lib 下,沒有的目錄需要手動新建

 

配置dataimporthandler

 

在目錄\Solrs\solr1\solrhome\collection1\conf下創建data-config.xml文件。

 

 

如果是鏈接sqlserver 注意配置sql和mysql的jdbc驅動,在同一個文件夾下 <lib dir="../../contrib/db/lib" regex=".*\.jar" /> 默認的就使用了mysql 的驅動。

看取到的數據和生成索引的數據數量是否一致,可以查看日志。

 

看一下別人的增刪改:http://www.cnblogs.com/madyina/p/4133908.html

 

Solrj代碼操作solr索引 .net solrnet

添加solrj的jar包 ,

 

路徑 \Solrs\solr1\dist\solrj-lib 下的是solrj的依賴包

 

 

新加Javaproject,添加相應的solrj對應的包。

把\solr-4.9.0\example\lib\ext 目錄下的jar包也添加進項目

 

 

  代碼實現

   添加,修改索引。

 注意:solr中添加修改索引必須要有主鍵,主鍵已經存在就修改,不存在就添加。

 

 

 

 

刪除索引

可以看到有多種刪除方法。

 

已經成功刪除

 

Solrj搜索

 

 

可以看到界面實現和代碼實現差別不大。

 

Solr服務器

應用

數據庫

 

 

 

 

 

 

SolrCloud 集群搭建

 

Zookeeper 管理和維護SolrCloud集群

 

1.安裝java環境

 

把集群需要的文件上傳到虛擬機

 

Zookeeper:http://blog.csdn.net/cjfeii/article/details/24706321

Solr下載地址: http://archive.apache.org/dist/lucene/solr/4.10.3/solr-4.10.3.tgz

 

1.安裝centos

2.安裝java 虛擬機

3.安裝zookeeper 保證是基數節點,最少3個節點。

解壓 tar -zxf zookeeper-3.4.6.tar.gz  

4.配置zookeeper

在zookeeper1文件夾下 創建data文件夾

在data文件夾下創建myid文件 寫入1. echo  1>>data/myid

以此類推,另外幾個節點也同樣配置。

創建配置文件。在conf文件夾下 zoo_sample.cfg 復制后改名 cp zoo_sample.cfg  zoo.cfg,然后編輯vim zoo.cfg。編輯datadir節點dataDir=/user/local/solrcloud/zookerper1/data .

這里注意clientport節點,同一個機器不要重復了端口號。

添加server.1節點 server.1=1912.168.80.128:2881:3881

每個zookeeper節點都要有這個配置。

Clientport 是zookeeper對外提供服務的端口 2881 是zookeeper服務器內部通信的端口,3881是zookeeper投票的端口,不能重復。

 

# The number of milliseconds of each tick

tickTime=2000

# The number of ticks that the initial

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just

# example sakes.

dataDir=/tmp/zookeeper

# the port at which the clients will connect

clientPort=2181

# the maximum number of client connections.

# increase this if you need to handle more clients

#maxClientCnxns=60

#

# Be sure to read the maintenance section of the

# administrator guide before turning on autopurge.

#

# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

"zoo.cfg" 28L, 922C1,1          頂端

# The number of milliseconds of each tick

tickTime=2000

# The number of ticks that the initial

# synchronization phase can take

initLimit=10

# The number of ticks that can pass between

# sending a request and getting an acknowledgement

syncLimit=5

# the directory where the snapshot is stored.

# do not use /tmp for storage, /tmp here is just

# example sakes.

dataDir=/user/local/solrcloud/zookerper1/data

# the port at which the clients will connect

clientPort=2181

# the maximum number of client connections.

# increase this if you need to handle more clients

#maxClientCnxns=60

#

# Be sure to read the maintenance section of the

# administrator guide before turning on autopurge.

#

# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

#

# The number of snapshots to retain in dataDir

#autopurge.snapRetainCount=3

# Purge task interval in hours

# Set to "0" to disable auto purge feature

#autopurge.purgeInterval=1

server.1=1912.168.80.128:2881:3881

server.2=1912.168.80.128:2882:3882

server.3=1912.168.80.128:2883:3883

"zoo.cfg" 31L, 1050C 已寫入

 

依次配置好zookeeper2,zookeeper3

5.啟動zookeeper

Bin文件夾下內容 

創建批量啟動文件 

也可以單個啟動。

 

添加新建啟動文件的執行屬性。

6.查看zookeeper狀態

 ./zkServer.sh status

 

Error contacting service. It is probably not running. 錯誤 查看zookeeper.out日志,分析錯誤原因。

添加了 批量啟動和查看狀態的執行文件

 

啟動成功。

 

 

配置搭建solr

一定要注意jar包的版本

主要修改的配置文件:

1.tomcat1/conf/server.xml  如果是同一台服務器就需要修改端口,防止沖突。單台可以使用默認設置。

2.tomcat1/webapps/solr/WEB-INF/web.xml –修改配置solrhome的位置

3.solrhome1/collection1/solrconfig.xml 主要是修改指定dist和contrib目錄和后續的插件jar包的路徑

 

solrhome是從solr-4.10.3包下的/example/solr 目錄復制的

tomcat 下webapps下的solr 是 solr-4.10.3下/example/solr下webapps的solr.war 解壓出來的

安裝配置tomcat

[root@supercentos1 download]# tar -zxf apache-tomcat-7.0.39.tar.gz安裝tomcat

[root@supercentos1 download]# mv apache-tomcat-7.0.39 /user/local/solrcloud/tomcat/tomcat1

[root@supercentos1 tomcat]# cp -r tomcat1/ tomcat2 復制出來3個tomcat

[root@supercentos1 tomcat]# cp -r tomcat1/ tomcat3

[root@supercentos1 tomcat]# cp -r tomcat1/ tomcat4

 

[root@supercentos1 tomcat]# vim tomcat1/conf/server.xml 修改各個tomcat端口配置

安裝配置solr

 

[root@supercentos1 download]# tar -zxf solr-4.10.3.tgz.tgz 解壓

復制solr-4.10.3/example/solr 復制到solrcloud下的solr文件夾下新建solrhome。

 

把solrhome下webapps的solr.war復制到tomcat下的webapps目錄下,解壓並刪除該war包。

 

[root@supercentos1 solr-4.10.3]# cp example/webapps/solr.war / user/local/solrcloud/tomcat/tomcat1/webapps/

[root@supercentos1 solr-4.10.3]# cd/user/local/solrcloud/tomcat/tomcat1/webapps/

unzip  -oq solr.war-d solr

rm solr.war 

解壓后刪除:

 

添加tomcat下solr依賴包

從目錄 solr-4.10.3\example\lib\ext 復制到Tomcat1\webapps\solr\WEB-INF\lib 下

 

cp -rf example/lib/ext/*.jar  /user/local/solrcloud/tomcat/tomcat1/webapps/solr/WEB-INF/lib

 

依賴包有log4j,需要添加lofg4j的配置文件solr-4.9.0\example\resources 到 Tomcat 6.0-solr\webapps\solr\WEB-INF\classes(該文件夾需手動添加)。

[root@supercentos1 solr-4.10.3]# cp -rf example/resources/log4j.properties/user/local/solrcloud/tomcat/tomcat1/webapps/solr/WEB-INF/classes/

 

然后把tomcat1下webapps下的sorl文件夾復制到每個tomcat目錄下。

 

復制相應個數的solr和tomcat, 每個sorl都對應一個tomcat容器。

[root@supercentos1 download]# cp -r  /user/local/solrcloud/tomcat/tomcat1/webapps/solr  /user/local/solrcloud/tomcat/tomcat2/webapps/

 

 

 

 

 

修改tomcat下sorl工程web.xml文件

 

vim tomcat/tomcat1/webapps/solr/WEB-INF/web.xml 2,3,4也同樣的步驟修改就行了

 

 

[root@supercentos1 solrcloud]# tomcat/tomcat1/bin/startup.sh 啟動tomcat1

 

Solrhome配置

把solr-4.9.0 下的dist和contrib復制到 solrhome\collection1\conf 下solrconfig.xml 中配置的相應路徑中

[root@supercentos1 solr-4.10.3]# cp -rf  contrib /user/local/solrcloud/solr/  這個需要在配置文件里配置,看是否對應

[root@supercentos1 solr-4.10.3]# cp -rf  dist  /user/local/solrcloud/solr/

Vim solrhome1/collection1/solrconfig.xml

 

 

 

集群搭建

主要修改solrhome下的solr.xml,關聯tomcat的ip和對應端口號。

修改tomcat下的bin目錄下的catalina.sh。關聯zookerper服務器地址和端口。

 

1.修改solrhome下的solr.xml配置文件

 

2.使用zookeeper統一管理配置文件。需要把solrhome下的collection1下的conf文件夾上傳到zookeeper。

3.執行/root/download/solr-4.10.3/example/scripts/cloud-scripts 下的

./zkcli.sh  -zkhost 192.168.80.128:2181,192.168.80.128:2182,192.168.80.128:2183 -cmd upconfig -confdir  /user/local/solrcloud/solr/solrhome1/collection1/conf -confname myconf 

 

./zkcli.sh  -zkhost(zookeeper服務器)  192.168.80.128:2181,192.168.80.128:2182,192.168.80.128:2183(zookeeper配置的服務器IP:clientProt) -cmd upconfig -confdir /user/local/solrcloud/solr/solrhome1/collection1/conf(管理的文件目錄) -confname myconf(zookeeper管理別名)

4.執行/zookerper1/bin/zkCli.sh 鏈接到zookerper1 

看到文件都傳上了

5.關聯zookerper和每一台solr。.告訴solr服務zookerper的位置

修改solr的tomcat下的bin目錄下的catalina.sh文件,加入DzkHost 指定zookerper服務器的地址:vim tomcat1/bin/catalina.sh

添加

 JAVA_OPTS="-DzkHost=192.168.80.128:2181,192.168.80.128:2182,192.168.80.128:2183"

 

同樣的修改各個solr的tomcat服務器。

6.重新啟動tomcat ,zookerper。

7.集群配置成功,這里只是單片

出現這個錯誤就看下solrhome下的solr.xml的ip和端口是否正確了, catalina.sh文件是不是手抖改錯地方了,坑爹的。。最好是配完一台后直接復制粘貼的靠譜。

創建有兩片的collection

http://192.168.80.128:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2

 

刪除collection

http://192.168.80.128:8080/solr/admin/collections?action=DELETE&name=collection1

 

Dataimport插件

需要在每個節點都配置下,修改solrconfig.xml,把solrconfig.xml文件上傳到zookerper。

把單機版的solrhome/collection1下的conf拷到本地下collection2_shard2_replica1 下。

上傳到zookerper 覆蓋原來的那個配置。

把dataimporthandler相關的jar包,和數據庫mysql或者sqlserver的驅動包放到相應的位置,配置solrconfig.xml。因為我這個是放到了solrhome公用的目錄下了,不用每個solrhome都配置了,要是多服務器就需要每台服務器都配置了。

 

執行/root/download/solr-4.10.3/example/scripts/cloud-scripts 下的

 

./zkcli.sh  -zkhost 192.168.80.128:2181,192.168.80.128:2182,192.168.80.128:2183 -cmd upconfig -confdir  /user/local/solrcloud/solr/solrhome1/collection2_shard2_replica1/conf -confname myconf

配置中文分詞器IkAnalyzer

重啟tomcat

使用Solrj查詢

 

       String zkHost = "192.168.80.128:2181,192.168.80.128:2182,192.168.80.128:2183";// zookerper地址

       CloudSolrServer cloudSolrServer = new CloudSolrServer(zkHost);

       // 指定默認鏈接的collection

       cloudSolrServer.setDefaultCollection("collection2");

       /// 設置查詢條件

       SolrQuery qSolrQuery = new SolrQuery();

       // 跟上面一樣,省略

       QueryResponse cloudResponse = cloudSolrServer.query(qSolrQuery);

       // 跟單機查詢一樣,省略。。

增刪改查跟單機版的都一樣

Solr tomcat zookeeper目錄結構

 

Download 資源

/user/local/solrcloud/zookerper1,2,3

/user/local.solrcloud/tomcat/tomcat1,2,3,4

/user/local.solrcloud/solr/solr1,2,3,4

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM