solr.xml的格式

2018-12-13 14:52 更新

solr.xml 文件定義了適用于全部或多個(gè)內(nèi)核的全局配置選項(xiàng)。

本節(jié)將介紹Solr附帶的默認(rèn)的solr.xml文件以及如何根據(jù)需要對其進(jìn)行修改。有關(guān)如何配置core.properties的詳細(xì)信息,請參閱“定義core.properties”一節(jié)。

定義solr.xml

您可以在您的$SOLR_HOME目錄(通常是:server/solr)中以獨(dú)立模式,或者在使用SolrCloud時(shí)在ZooKeeper中找到solr.xml。默認(rèn)solr.xml文件如下所示:

<solr>

  <solrcloud>
    <str name="host">${host:}</str>
    <int name="hostPort">${jetty.port:8983}</int>
    <str name="hostContext">${hostContext:solr}</str>
    <int name="zkClientTimeout">${zkClientTimeout:15000}</int>
    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
  </solrcloud>

  <shardHandlerFactory name="shardHandlerFactory"
    class="HttpShardHandlerFactory">
    <int name="socketTimeout">${socketTimeout:0}</int>
    <int name="connTimeout">${connTimeout:0}</int>
  </shardHandlerFactory>

</solr>

如您所見,發(fā)現(xiàn) Solr 配置是“SolrCloud 友好的”。但是,<solrcloud>元素的存在并不意味著Solr實(shí)例在SolrCloud模式下運(yùn)行。除非在啟動時(shí)指定了-DzkHost或-DzkRun,本節(jié)被忽略。

Solr.xml參數(shù)

<solr>元素

沒有屬性可以在<solr>標(biāo)簽中指定,這是solr.xml的根元素。下表列出了solr.xml中每個(gè)XML元素的子節(jié)點(diǎn)。

  • adminHandler

    這個(gè)屬性不需要設(shè)置。

    如果使用,則應(yīng)將此屬性設(shè)置為繼承自CoreAdminHandler的類的FQN(完全限定名稱)。例如,<str name="adminHandler">com.myorg.MyAdminHandler</str>將配置自定義管理處理程序(MyAdminHandler)來處理管理請求。

    如果這個(gè)屬性沒有設(shè)置,Solr使用默認(rèn)的管理處理程序,org.apache.solr.handler.admin.CoreAdminHandler。

  • collectionsHandler

    如上所述,用于自定義CollectionsHandler實(shí)現(xiàn)。

  • infoHandler

    如上所述,用于自定義InfoHandler實(shí)現(xiàn)。

  • coreLoadThreads

    指定將分配給并行加載內(nèi)核的線程數(shù)。

  • coreRootDirectory

    核心發(fā)現(xiàn)樹的根目錄,默認(rèn)為$SOLR_HOME(默認(rèn)server/solr)。

  • managementPath

    目前不可操作。

  • sharedLib

    指定將在所有內(nèi)核之間共享的公用庫目錄的路徑。此目錄中的任何JAR文件都將被添加到Solr插件的搜索路徑中。這條路是相對$SOLR_HOME的。自定義處理程序可能被放置在這個(gè)目錄中。

  • shareSchema

    此屬性設(shè)置為true,可確保指向同一個(gè)Schema資源文件的多個(gè)核心將引用同一個(gè)IndexSchema對象。共享IndexSchema對象使加載核心更快。如果您使用此功能,請確保您的架構(gòu)文件中沒有使用特定于核心的屬性。

  • transientCacheSize

    定義transient=true在最近使用最少的內(nèi)核之前,可以加載多少個(gè)內(nèi)核。

  • configSetBaseDir

    可以找到用于Solr核心的configSets的目錄。默認(rèn)為$SOLR_HOME/configsets。

<solrcloud>元素

這個(gè)元素定義了幾個(gè)與SolrCloud相關(guān)的參數(shù)。除非Solr實(shí)例以-DzkRun或-DzkHost開始,否則這部分被忽略。

  • distribUpdateConnTimeout

    用于設(shè)置集群內(nèi)部更新的基礎(chǔ)connTimeout。

  • distribUpdateSoTimeout

    用于設(shè)置集群內(nèi)部更新的基礎(chǔ)socketTimeout

  • host

    Solr用于訪問核心的主機(jī)名稱。

  • hostContext

    url上下文路徑。

  • hostPort

    Solr端口用于訪問內(nèi)核。

    在默認(rèn)solr.xml文件中,設(shè)置為${jetty.port:8983},將使用Jetty中定義的Solr端口,否則返回到8983。

  • leaderVoteWait

    當(dāng)SolrCloud啟動時(shí),每個(gè)Solr節(jié)點(diǎn)將等待該分片的所有已知副本多長時(shí)間,然后才能假定任何未報(bào)告的節(jié)點(diǎn)已關(guān)閉。

  • leaderConflictResolveWait

    當(dāng)試圖為碎片選擇一個(gè)引線時(shí),該屬性設(shè)置副本將等待查看沖突的狀態(tài)信息以待解決的最大時(shí)間;在進(jìn)行滾動重啟時(shí),特別是當(dāng)托管監(jiān)督員的節(jié)點(diǎn)重新啟動時(shí),可能會出現(xiàn)狀態(tài)信息中的臨時(shí)沖突。

    通常,180000(ms)的默認(rèn)值足以解決沖突;如果您在SolrCloud中有數(shù)百或數(shù)千個(gè)小集合,則可能需要增加此值。

  • zkClientTimeout

    連接到ZooKeeper服務(wù)器的超時(shí)。它與SolrCloud一起使用。

  • zkHost

    在SolrCloud模式下,Solr應(yīng)該用于集群狀態(tài)信息的ZooKeeper主機(jī)的URL。

  • genericCoreNodeNames

    如果為TRUE,則節(jié)點(diǎn)名稱不是基于節(jié)點(diǎn)的地址,而是基于標(biāo)識核心的通用名稱。當(dāng)一臺不同的機(jī)器接管服務(wù)的時(shí)候,核心的東西就會更容易理解。

  • zkCredentialsProvider & zkACLProvider

    如果使用ZooKeeper訪問控制,則這是可以指定的可選參數(shù)。

<logging>元素

  • class

    用于記錄的類。相應(yīng)的JAR文件必須可用于Solr,也許通過solrconfig.xml中的一個(gè)<lib>指令。

  • enabled

    true / false - 是否啟用日志記錄。

<logging> <watcher>元素

  • size

    緩沖的日志事件的數(shù)量。

  • threshold

    您的特定日志記錄實(shí)現(xiàn)將記錄到的日志記錄級別。例如,當(dāng)使用 log4j 時(shí),可以指定DEBUG,WARN,INFO等。

<shardHandlerFactory>元素

如果您希望創(chuàng)建自定義分片處理程序,則可以在solr.xml定義自定義分片處理程序:

<shardHandlerFactory name="ShardHandlerFactory" class="qualified.class.name">

由于這是自定義分片處理程序,因此子元素是特定于實(shí)現(xiàn)的。Solr提供的默認(rèn)和唯一的分片處理程序是HttpShardHandlerFactory,在這種情況下,可以指定以下子元素:

  • socketTimeout

    群集內(nèi)查詢和管理請求的讀取超時(shí)。默認(rèn)值與<solrcloud>節(jié)中指定的distribUpdateSoTimeout相同。

  • connTimeout

    群集內(nèi)查詢和管理請求的連接超時(shí)。默認(rèn)為distribUpdateConnTimeout在該<solrcloud>部分中指定的。

  • urlScheme

    要在分布式搜索中使用的URL方案。

  • maxConnectionsPerHost

    每個(gè)主機(jī)允許的最大連接數(shù),默認(rèn)為20。

  • maxConnections

    允許的最大連接總數(shù)。默認(rèn)為10000。

  • corePoolSize

    線程池服務(wù)請求的初始核心大小。默認(rèn)是0。

  • maximumPoolSize

    線程池服務(wù)請求的最大大小。默認(rèn)是無限的。

  • maxThreadIdleTime

    空閑線程在被殺死之前在隊(duì)列中持續(xù)的時(shí)間(以秒為單位)。默認(rèn)是5秒。

  • sizeOfQueue

    如果線程池使用后備隊(duì)列,則使用直接切換的最大大小是多少?默認(rèn)是使用SynchronousQueue。

  • fairnessPolicy

    一個(gè)布爾值,用于配置線程池是否支持吞吐量的公平性。缺省值為false以支持吞吐量。

<metrics>元素

solr.xml中的<metrics>元素允許您自定義Solr報(bào)告的度量標(biāo)準(zhǔn)。您可以定義不應(yīng)該返回的系統(tǒng)屬性,或定義自定義供應(yīng)商和記者。

在默認(rèn)的 solr. xml 中,您將看不到任何<metrics>配置。如果您想為您的安裝自定義度量標(biāo)準(zhǔn),請參閱“指標(biāo)配置”部分。

替換solr.xml中的JVM系統(tǒng)屬性

Solr支持在solr.xml的JVM系統(tǒng)屬性值的變量替換,它允許運(yùn)行時(shí)指定各種配置選項(xiàng)。語法是:${propertyname[:option default value]}。這允許定義Solr啟動時(shí)可以覆蓋的默認(rèn)值。如果未指定默認(rèn)值,則必須在運(yùn)行時(shí)指定該屬性,否則該solr.xml文件將在分析時(shí)生成錯(cuò)誤。

在啟動JVM時(shí)通常使用-D標(biāo)志指定的任何JVM系統(tǒng)屬性都可以用作solr.xml文件中的變量。

例如,在下面顯示的solr.xml文件中,socketTimeout和connTimeout值都被設(shè)置為“0”。但是,如果您使用bin/solr -DsocketTimeout=1000開啟Solr,則HttpShardHandlerFactory的socketTimeout的選項(xiàng)要使用1000毫秒的值覆蓋,而重寫的connTimeout選項(xiàng)將繼續(xù)使用默認(rèn)屬性值“0”。

<solr>
  <shardHandlerFactory name="shardHandlerFactory"
                       class="HttpShardHandlerFactory">
    <int name="socketTimeout">${socketTimeout:0}</int>
    <int name="connTimeout">${connTimeout:0}</int>
  </shardHandlerFactory>
</solr>
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號