Solr集群更新配置的方式


  solr集群中配置文件是經常更新的,頻率最高的也就是schema.xml和solrconfig.xml這兩個配置文件了,對於更新配置文件之前,我們先了解一下集群項目結構

  由於在集群模式下,solrconfig.xml和schema.xml等配置文件都由Zookeeper集群管理,所以本地項目中只保留單一shard分片,各個collections分片保存位置是solr根目錄下的server/solr/下,這個目錄下有一個solr.xml文件,然后可以隨便進入一個shard目錄,可以看到只有一個data目錄和一個core.properties文件,其中data目錄存放solr備份的索引數據、core.properties文件通過vim編譯可以看到這里面保存了shard序號,collections名稱,核子節點的名稱等等;另外官方文檔也給出了對應的solrcloud本地的目錄結構:

<solr-home-directory>/
  solr.xml
  core_name1/
    core.properties
    data/
  core_name2/
    core.properties
    data/

  這種結構和我們看到的是一樣的

  根據以上的目錄結構,所以我們更新配置必須將配置文件更新到Zookeeper集群才可以正常生效,之前在網上查過一些資料,好多都是無效或者過時的,用過一段時間的一個方法就是,首先登錄zookeeper,刪除原有的schema.xml文件,然后進行配置的上傳,上傳完成后並不是立即生效的,所以要依次重啟solr集群,首先說明這個方法是有效的,但是感覺太麻煩;另外由於生產過程中,隨便重啟solr服務就和重啟服務器一樣會造成一定的損失或者風險,所以這種方式明顯不合理,盡管我們一直在使用;實際上最好的解決方法在官方文檔已經給出了,這個需要我們自己慢慢探索,這里解決方法如下:

  比如我們修改schema.xml配置文件之后,根本不用登錄zookeeper刪除原有文件,文件會自動覆蓋,這里直接上傳即可,命令如下:

./server/scripts/cloud-scripts/zkcli.sh -zkhost localhost:2181 -cmd putfile /solr/configs/my_config/schema.xml ../configs/conf/schema.xml

  參數putfile指定配置文件在zookeeper上的絕對路徑,這里注意是配置的路徑,不是collection的路徑,二者名稱不相同,后面跟的是修改之后本地schema.xml配置文件的路徑

  上傳文件之后,我們通過solr admin管理界面都可以看到文件內容更新了,有2種方法可以查看到

  

  

  但是我們去Update、Query時會出錯,瀏覽Schema字段時沒有更新,很明顯配置沒有生效;接下來就是最重要的一步,我們找到官方文檔的collections API位置,可以看到有一個如下的API:

  

  RELOAD這個API就是重新加載collection,不用重啟solr,點擊錨點可以看到具體使用解釋如下:

  

  可以看到解釋的很清楚了,經過上一步更新覆蓋了配置文件之后,我們只需要curl或者訪問以下鏈接即可:

http://localhost:8983/solr/admin/collections?action=RELOAD&name=my_collection

  訪問之后,返回success,就重新加載核心成功了,全部正常使用

 

  以上對於更新collections配置文件的這個過程其實也是解決問題的一個過程,首先我們應該充分理解我們使用的工具或者框架具體是做什么的或者說哪方面是有優勢的,以及更深的實現機制和原理,多去對比,這樣遇到問題的時候才可以做到知道這個問題而不會不知所措;另外有些地方不合理,是為什么不合理,會給生產帶來哪些不好的影響以及潛在的風險;然后帶着這些問題去搜索,建議查看官方文檔,特別是大數據方面直接在搜索引擎搜索出來的結果大多是互相抄襲、過時、甚至錯誤的,這個時候就要充分的去品味官方文檔中的解釋,然后去自己思考,這樣慢慢的自己的知識就健全了,慢慢的自己的內功也就提升了,相對來說也就慢慢的進入了高手的行列;對於初學者不知所措是很正常的,個人認為重要的還是堅持鍥而不舍的研究,只有這樣才可以跟隨技術的進步

  最后在學習工作中,總結一句話就是:永不放棄、知其然知其所以然、授人以魚,不如授之以漁


免責聲明!

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



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