solr新版本環境搭建

solr環境介紹

  • solr5.5
  • java1.7
  • mysql
  • zookeeper

solr這裏使用的是solr5.5,由於該版本仍然支持jdk1.7適用性較廣,可是該方法也能用在solr6.0上。 經過該方法咱們會搭建一個能夠從數據庫導入數據的solr環境。java

單機環境

首先咱們解壓下載到的solr壓縮包mysql

solr目錄結構以下

solr目錄結構

加入依賴jar包

首先咱們向dist目錄中放入咱們須要依賴的外部jar包,這裏咱們使用的是mysql數據庫因此咱們須要加入mysql的driver,mysql-connector-java-5.1.6.jar這個包能夠去網上找一下很常見。sql

設定core配置文件

首先咱們要創建本身的core配置文件,拷貝\solr-5.5.2\server\solr\configsets\data_driven_schema_configs文件夾到\solr-5.5.2\server\solr\,並將其更名爲SolrTest,該配置文件將做爲咱們core配置文件的模板。下面還要對它稍做修改。數據庫

加入DataImportHandler

在新創建的SolrTest文件夾的\conf\solrconfig.xml文件中搜索<requestHandler name="/select"咱們能夠看到以下內容apache

<requestHandler name="/select" class="solr.SearchHandler">
    <!-- default values for query parameters can be specified, these
         will be overridden by parameters in the request
      -->
    <lst name="defaults">
      <str name="echoParams">explicit</str>
      <int name="rows">10</int>
      <!-- <str name="df">text</str> -->
    </lst>

咱們在它的上面加入DataImportHandler瀏覽器

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">  
      <lst name="defaults">  
         <str name="config">data-config.xml</str>  
      </lst>  
 </requestHandler>

要使上面的DataImportHandler生效咱們還要在配置文件中引入相關jar包,此外爲了從數據庫導入數據還要引入數據庫驅動jar包。 在新創建的SolrTest文件夾的\conf\solrconfig.xml文件中搜索<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\d.*\.jar" />能夠看到以下內容性能

<lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar" />ui

<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\d.*\.jar" />url

<lib dir="${solr.install.dir:../../../..}/contrib/clustering/lib/" regex=".*\.jar" />code

<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-clustering-\d.*\.jar" />

<lib dir="${solr.install.dir:../../../..}/contrib/langid/lib/" regex=".*\.jar" />

<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-langid-\d.*\.jar" />

<lib dir="${solr.install.dir:../../../..}/contrib/velocity/lib" regex=".*\.jar" />

<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\d.*\.jar" />

<lib dir="${solr.install.dir:../../../..}/dist/" regex="mysql-connector-java-5.1.6.jar" />

<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />

其中新加入了solr-dataimporthandler和mysql-connector-java-5.1.6.jar,他們分別是數據導入與數據庫驅動的相關jar包。

數據導入配置

咱們的solr環境是須要從數據庫導入數據,爲了實現這一功能咱們還要進行一些配置。

實驗數據表

實驗數據表

上面的DataImportHandler配置中咱們設定了配置文件文件名爲data-config.xml。所以咱們要在SolrTest/conf目錄下新建data-config.xml, 內容以下

<?xml version="1.0" encoding="UTF-8"?>  
<dataConfig>  
    <dataSource name="source1" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/solrtest" user="root" password="root" batchSize="-1" />  
	<document>  
        <entity name="testdata" pk="id"  dataSource="source1"   
                query="select * from  testdata"  
                deltaImportQuery="select * from testdata where id='${dih.delta.id}'"  
                deltaQuery="select id from testdata where ts> '${dataimporter.last_index_time}'">  
  
			<field column="id" name="id"/>  
			<field column="name" name="name"/>  
			<field column="age" name="age"/>  
		    <field column="ts" name="ts"/>  
	</entity>  
	</document>  
</dataConfig>

其中deltaQuery是增量查詢,經過該語句查詢新增的條目。而後根據deltaImportQuery指定的SQL語句返回全部這些ID的數據,即爲此次增量導入所要處理的數據。「${dih.delta.id}」和 「${dataimporter.last_index_time}」爲內置變量,分別爲索引id和索引時間。

managed-schema配置field信息

而後咱們要打開SolrTest/conf/managed-schema文件,搜索<field name="id" 在這些field標籤下加入咱們數據表對應column的設置,以下

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
    <field name="_version_" type="long" indexed="true" stored="true"/>
    <field name="_root_" type="string" indexed="true" stored="false"/>
    <field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/>
    <field name="name" type="string" indexed="true" stored="true" />
    <field name="age" type="int" indexed="true" stored="false" />
    <field name="ts" type="date" indexed="true" stored="true" />
    <copyField source="*" dest="_text_"/>

說明:這裏加入了name、age、ts幾項,其中id一項使用默認的就好,它知足了個人設置要求。 field 標籤帶有不少配置,其中:

  • name: 表示域的名稱,是強制必須有的屬性
  • type: 域類型的名稱,與 fieldType 元素的 name 屬性值對應,也是強制必須有的屬性,不可省略
  • indexed: true 即表示須要對該域進行索引,通常若是你須要在該域上進行查詢或排序時,則須要配置爲 true, 默認值爲 false
  • stored: 表示是否須要把域值存儲到硬盤上,方便你後續查詢時能再次提取出來原樣顯示給用戶
  • docValues: 表示此域是否須要添加一個 docValues 域,這對 facet 查詢, group 分組,排序, function 查詢有好處,儘管這個屬性不是必須的,但他能加快索引數據加載,對 NRT 近實時搜索比較友好,且更節省內存,但它也有一些限制,好比當前 docValues 域只支持 strField,UUIDField,Trie*Field 等域,且要求域的域值是單值不能是多值域
  • multiValued: 表示這個域是否能夠存儲多個值,若設置爲 true, 即表示這是一個多值域
  • omitNorms: 此屬性若設置爲 true ,即表示將忽略域值的長度標準化,忽略在索引過程當中對當前域的權重設置,且會節省內存。只有全文本域或者你須要在索引建立過程當中設置域的權重時才須要把這個值設爲 false, 對於基本數據類型且不分詞的域如 intFeild,longField,StrField 等默認此屬性值就是 true, 不然默認就是 false.
  • termVectors: 設置爲 true 即表示須要爲該 field 存儲項向量信息,當你須要 MoreLikeThis 功能時,則須要將此屬性值設爲 true ,這樣會帶來一些性能提高。
  • termPositions: 是否存儲 Term 的起始位置信息,這會增大索引的體積,但高亮功能須要依賴此項設置,不然沒法高亮
  • termOffsets: 表示是否存儲索引的位置偏移量,高亮功能須要此項配置,當你使用 SpanQuery 時,此項配置會影響匹配的結果集

複製域即表示把某個域的值複製到一個目標域上面,那若是把多個域的值複製到一個目標域上面呢,你能夠進行屢次複製,體現到 XML 配置上就是相似這樣的配置:

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

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

創建core

配置文件修改完了咱們準備創建本身的core

首先運行solr solr-5.5.2/bin/solr start -p 8983

瀏覽器訪問http://localhost:8985/solr,選擇Core Admin以下

創建core

確認後索引建成了,準備導入數據

索引

點擊Dataimport

Dataimport

執行一下query的查詢 數據已經導入進來了

query的查詢

集羣環境搭建

集羣環境與單機環境最大的不一樣就是配置文件位於zookeeper,整個集羣的配置由zookeeper進行管理。

首先仍是按單機的步驟改寫配置文件。

向zookeeper上傳配置文件

配置文件改寫完成後,執行solr-5.5.2/server/scripts/cloud-scripts/zkcli.sh腳本,命令以下

./zkcli.sh -zkhost localhost:2181 -cmd upconfig -confdir /usr/local/src/solr-5.5.2/server/solr/SolrTest/conf/ -confname SolrTest

其中 localhost:2181 爲我搭建的zookeeper服務地址, /usr/local/src/solr-5.5.2/server/solr/SolrTest/conf/爲咱們修改的配置文件地址,SolrTest爲core配置的配置名

執行該命令後咱們會在zookeeper上見到

zookeeper

確實有SolrTest的節點了。

啓動兩個solr

solr-5.5.2/bin/solr -c -z localhost:2181 -p 8983

solr-5.5.2/bin/solr -c -z localhost:2181 -p 8984

說明 solr命令的-c參數表明could集羣,-z表明使用外部zookeeper -p 表明監聽的端口。

創建集羣core

首先瀏覽器訪問http://localhost:8983/solr,選擇Core Admin以下

shard1

首先瀏覽器訪問http://localhost:8984/solr,選擇Core Admin以下

shard2

說明: 這裏由於資源有限,我在一臺機器上啓動了兩個solr實例,在創建core的過程當中有這麼幾個參數

  • name就是core的名稱
  • instanceDir就是core的本地目錄,這裏對應了/usr/local/src/solr-5.5.2/server/solr/solrcloud1
  • dataDir表明會在solrcloud1目錄下創建數據文件夾data
  • config與schema表明配置文件的名稱
  • collection比較重要,這裏只能填寫zookeeper有的配置,這裏只能填寫我上面上傳的的SolrTest
  • shard是分片的名稱

集羣創建好了

集羣創建好了

導入數據和單機一個套路,不貼圖了

相關文章
相關標籤/搜索