Solr:配置solrconfig.xml文件

2018-12-08 14:15 更新

在Solr中solrconfig.xml文件是影響Solr本身參數(shù)最多的配置文件。

在配置Solr時(shí),您會(huì)經(jīng)常使用到solrconfig.xml,不論是直接或通過(guò)Config API創(chuàng)建“配置覆蓋”(configoverlay.json)以覆蓋solrconfig.xml中的值。

在solrconfig.xml中,您需要配置下述的一些重要的功能,如:

  • 請(qǐng)求處理程序,它將請(qǐng)求處理到Solr,例如向索引添加文檔的請(qǐng)求或返回查詢結(jié)果的請(qǐng)求
  • listener,用于“l(fā)istener”特定查詢相關(guān)事件的進(jìn)程;listener可以用來(lái)觸發(fā)特殊代碼的執(zhí)行,例如調(diào)用一些常見(jiàn)的查詢來(lái)預(yù)熱緩存
  • 請(qǐng)求調(diào)度程序管理HTTP通信
  • 管理Web界面
  • 為分布式的復(fù)制配置相關(guān)的參數(shù)(這些參數(shù)在Legacy Scaling and Distribution中詳細(xì)介紹)

該solrconfig.xml文件位于每個(gè)集合的conf/目錄中。在server/solr/configsets/目錄中可以找到幾個(gè)備受好評(píng)的示例文件,演示了許多不同類型安裝的最佳實(shí)踐。

我們將介紹以下部分的選項(xiàng):

  • SolrConfig中的DataDir和DirectoryFactory
  • SolrConfig中的Lib指令
  • SolrConfig中的架構(gòu)工廠定義(Schema Factory Definition)
  • SolrConfig中的IndexConfig
  • SolrConfig中的RequestHandlers和SearchComponents
  • SolrConfig中的InitParams
  • SolrConfig中的UpdateHandlers
  • 查詢SolrConfig中的設(shè)置
  • SolrConfig中的RequestDispatcher
  • 更新請(qǐng)求處理器
  • 編解碼器工廠

在Solr配置文件中替換屬性

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

在下面的內(nèi)容中,有多種方法可以用于指定可以在配置文件中使用的屬性。其中,強(qiáng)烈認(rèn)為“配置覆蓋”作為首選方法,因?yàn)樗3直镜嘏渲眉?,而且它很容易修改?/p>

JVM系統(tǒng)屬性

在啟動(dòng)JVM時(shí),通常使用-D標(biāo)志指定的任何 JVM 系統(tǒng)屬性都可用作 Solr 中任何 XML 配置文件中的變量。

例如,在示例solrconfig.xml文件中,您將看到這個(gè)定義要使用的鎖定類型的值:

<lockType>${solr.lock.type:native}</lockType>

這意味著鎖定類型默認(rèn)為“native”,但是當(dāng)啟動(dòng)Solr時(shí),可以通過(guò)啟動(dòng)Solr來(lái)使用JVM系統(tǒng)屬性來(lái)覆蓋它:

bin/solr start -Dsolr.lock.type=none

通常,您要設(shè)置的任何Java系統(tǒng)屬性都可以使用標(biāo)準(zhǔn)-Dproperty=value語(yǔ)法通過(guò)bin/solr腳本傳遞。或者,您可以將通用的系統(tǒng)屬性添加到Solr包含文件(bin/solr.in.sh或bin/solr.in.cmd)中定義的SOLR_OPTS環(huán)境變量。有關(guān)Solr包含文件如何工作的更多信息,請(qǐng)參閱:將Solr應(yīng)用到生產(chǎn)

配置API以覆蓋solrconfig.xml

配置API允許您使用一個(gè)API來(lái)修改Solr的配置,特別是用戶定義的屬性。使用此API進(jìn)行的更改存儲(chǔ)在名為configoverlay.json的文件中。這個(gè)文件只能用API進(jìn)行編輯,看起來(lái)像下面這個(gè)例子:

{"userProps":{
    "dih.db.url":"jdbc:oracle:thin:@localhost:1521",
    "dih.db.user":"username",
    "dih.db.pass":"password"}}

有關(guān)更多詳細(xì)信息,請(qǐng)參閱配置API部分。

solrcore.properties

如果Solr核心的配置目錄包含一個(gè)名為solrcore.properties的文件,則可以使用Java標(biāo)準(zhǔn)屬性文件格式包含任意用戶定義的屬性名稱和值,并且這些屬性可以在該Solr核心的XML配置文件中用作變量。

例如,可以使用一個(gè)示例配置在集合的conf/目錄中創(chuàng)建以下solrcore.properties文件,以覆蓋所使用的lockType。

#conf/solrcore.properties
solr.lock.type=none

注意:solrcore.properties 屬性不會(huì)在 SolrCloud 模式下工作(不從ZooKeeper讀?。?。將來(lái)可能會(huì)刪除此功能。相反,可以使用另一種機(jī)制,如配置疊加。

solrcore.properties 文件的路徑和名稱可以使用 core.properties 中的 properties 屬性重寫。

core.properties中的用戶定義的屬性

每個(gè)Solr核心都有一個(gè)core.properties文件,在使用API??時(shí)自動(dòng)創(chuàng)建。在創(chuàng)建SolrCloud集合時(shí),可以通過(guò)自定義參數(shù)傳入每個(gè)將創(chuàng)建的core.properties,只需使用“property”作為參數(shù)名稱前綴即可,比如URL參數(shù),示例如下:

http://localhost:8983/solr/admin/collections?action=CREATE&name=gettingstarted&numShards=1&property.my.custom.prop=edismax

這將創(chuàng)建一個(gè)core.properties文件,至少具有以下屬性(為簡(jiǎn)潔起見(jiàn),省略了其他文件):

#core.properties
name=gettingstarted
my.custom.prop=edismax

該my.custom.prop屬性可以被用作一個(gè)變量,例如在solrconfig.xml中:

<requestHandler name="/select">
  <lst name="defaults">
    <str name="defType">${my.custom.prop}</str>
  </lst>
</requestHandler>

隱含的核心屬性

Solr 核心的幾個(gè)屬性可以用作變量替換中使用的“隱式”屬性,獨(dú)立于初始化值的位置或方式。例如:不管特定Solr核心的名稱是在core.properties實(shí)例目錄的名稱中顯式配置還是從實(shí)例目錄中推斷出來(lái)的,隱式屬性solr.core.name都可用作該核心配置文件中的變量。

<requestHandler name="/select">
  <lst name="defaults">
    <str name="collection_name">${solr.core.name}</str>
  </lst>
</requestHandler>

所有隱式屬性都使用solr.core.名稱前綴,并反映等效core.properties屬性的運(yùn)行時(shí)值:

  • solr.core.name
  • solr.core.config
  • solr.core.schema
  • solr.core.dataDir
  • solr.core.transient
  • solr.core.loadOnStartup
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)