Solr7的主要變化

2018-11-06 16:13 更新

Solr 7 是 Solr 的一個(gè)主要的新版本,它引入了新的功能和其他一些可能影響您現(xiàn)有安裝的其他更改。

開始升級(jí)

在開始遷移您的配置和索引之前,需要考慮 Solr 7 中的主要更改。此頁面旨在突出顯示最大的變化 - 您可能需要了解的新功能,還包括默認(rèn)行為和已刪除的已否決功能的更改。

然而,Solr 7 中有許多變化,因此,對 Solr 升級(jí)說明以及 Solr 實(shí)例中的 CHANGES.txt 文件進(jìn)行徹底的審查將有助于您計(jì)劃向 Solr 7 遷移。本節(jié)將重點(diǎn)介紹 Solr 7中的一些你應(yīng)該知道的重大變化。

您還應(yīng)該考慮在尚未升級(jí)到的任何版本中對 Solr 所做的所有更改。例如,如果您當(dāng)前正在使用 Solr 6.2,則除了 7.0 的更改之外,還應(yīng)該查看所有后續(xù) 6.x 版本中所做的更改。

將數(shù)據(jù)重新編入索引被認(rèn)為是最佳做法,如果可能的話,您應(yīng)該嘗試這樣做。但是,如果重新索引不可行,請記住,您只能一次升級(jí)一個(gè)主要版本。因此,Solr 6.x 索引將與 Solr 7 兼容,但 Solr 5.x 索引不會(huì)。

如果您現(xiàn)在不重新編制索引,請記住,您將需要重新索引數(shù)據(jù)或升級(jí)索引,然后才能在將來發(fā)布 Solr 8 時(shí)轉(zhuǎn)移到 Solr 8。有關(guān)如何升級(jí)索引的更多詳細(xì)信息,請參閱IndexUpgrader 工具一節(jié)。

有關(guān)如何升級(jí) SolrCloud 群集的詳細(xì)信息,另請參閱升級(jí) Solr 群集一節(jié)。

新增功能和功能增強(qiáng)

復(fù)制模式

直到 Solr 7 ,SolrCloud 模型的復(fù)制副本允許任何復(fù)制副本在領(lǐng)導(dǎo)者丟失時(shí)成為領(lǐng)導(dǎo)者。這對大多數(shù)用戶來說非常有效,在集群出現(xiàn)問題的情況下提供可靠的故障切換。但是,由于所有副本必須在任何時(shí)候都同步,因此在大型群集中需要付出代價(jià)。

為了提供更多的靈活性,已經(jīng)添加了兩種新類型的副本,名為 TLOG&PULL。這些新類型提供了一些選項(xiàng),以便僅通過從前導(dǎo)項(xiàng)復(fù)制索引段與引線同步的副本。TLOG 類型還有一個(gè)額外的好處,就是維護(hù)一個(gè)事務(wù)日志(它的名字為 “tlog”),如果需要的話,它可以恢復(fù)并成為領(lǐng)導(dǎo)者;PULL 類型不維護(hù)事務(wù)日志,因此不能成為領(lǐng)導(dǎo)者。

作為這種改變的一部分,傳統(tǒng)的副本現(xiàn)在被命名為 NRT。如果您沒有明確定義一些 TLOG 或 PULL 副本,則 Solr 默認(rèn)創(chuàng)建 NRT 副本。如果這個(gè)模型適合您的工作,您不需要改變?nèi)魏螙|西。

有關(guān)新副本模式的更多詳細(xì)信息,以及如何在群集中定義副本類型,請參見副本類型一節(jié)。

自動(dòng)縮放

Solr 自動(dòng)縮放是 Solr 中的一個(gè)新功能套件,用于管理 SolrCloud 群集更加簡單和自動(dòng)化。

Solr 自動(dòng)縮放的核心是為用戶提供一個(gè)規(guī)則語法來定義如何在集群中分發(fā)節(jié)點(diǎn)和碎片的首選項(xiàng)和策略,目的是在集群中保持平衡。從 Solr 7 開始,Solr 將在確定將創(chuàng)建或移動(dòng)各種 Collections API 命令的新碎片和副本放置到何處時(shí),將考慮任何策略或首選項(xiàng)規(guī)則。

有關(guān) Solr 7.0 中可用選項(xiàng)的詳細(xì)信息,請參見 SolrCloud 自動(dòng)縮放部分。預(yù)計(jì)在該領(lǐng)域的后續(xù) 7.x 版本中將會(huì)發(fā)布更多功能。

其他功能和增強(qiáng)

  • Analytics 組件已被重構(gòu)。該組件的文檔正在進(jìn)行中;在可用之前,請參閱 SOLR-11144 了解更多詳情。
  • 在早期的 6.x 版本中發(fā)布了其他幾個(gè)新功能,您可能會(huì)錯(cuò)過這些功能:學(xué)習(xí)排名(Learning to Rank)。統(tǒng)一的高亮(Unified Highlighter)。度量 API(Metrics API)。另請參閱下面的 “JMX 支持” 和 “MBean”一節(jié)中有關(guān)棄用的信息。有效負(fù)載查詢(Payload queries)。流媒體評(píng)估器(Streaming Evaluators)。 / v2 API。 圖流表達(dá)式(Graph streaming expressions)。

配置和默認(rèn)更改

新的默認(rèn)配置集

對與 Solr 有關(guān)的配置進(jìn)行了若干修改;不僅他們的內(nèi)容,還有 Solr 在這些方面的行為:

  • data_driven_configset 與 basic_configset 已被刪除,取而代之的是 _defaultconfigset。sample_techproducts_configset 還保留,專門與example/exampledocs 目錄中的 Solr 附帶的示例文檔一起使用。
  • 當(dāng)創(chuàng)建一個(gè)新的集合時(shí),如果您不指定一個(gè) configSet,_default 將被使用。如果你使用 SolrCloud,_defaultconfigSet 會(huì)自動(dòng)上傳到 ZooKeeper。如果使用獨(dú)立模式,instanceDir 將自動(dòng)創(chuàng)建,使用 _defaultconfigSet 作為基礎(chǔ)。

無模式的改進(jìn)

為了改進(jìn)無模式的功能,當(dāng)檢測到傳入字段中的數(shù)據(jù)應(yīng)該具有基于文本的字段類型時(shí),Solr 現(xiàn)在的行為會(huì)有所不同。

  • 默認(rèn)情況下,傳入的字段將被索引為 text_general(可以更改)。該字段的名稱將與文檔中定義的字段名稱相同。
  • 復(fù)制字段規(guī)則將被插入到您的模式中,以將新的 text_general 字段復(fù)制到具有名稱的新字段 <name>_str。這個(gè)字段的類型將是一個(gè) strings 字段(允許多個(gè)值)。文本字段的前 256 個(gè)字符將被插入到新的字符串字段中。

如果您希望刪除復(fù)制字段規(guī)則,或者更改插入到字符串字段的字符數(shù)或所使用的字段類型,則可以自定義此行為。有關(guān)詳細(xì)信息,請參閱 “無模式”部分。

Tip:由于復(fù)制字段規(guī)則可以降低索引的速度并增加索引大小, 所以建議您在需要時(shí)只使用復(fù)制字段。如果您不需要對字段進(jìn)行排序或分面,則應(yīng)該刪除自動(dòng)生成的復(fù)制字段規(guī)則。

可以使用 update.autoCreateFields 屬性禁用自動(dòng)字段創(chuàng)建。要做到這一點(diǎn),您可以通過如下命令使用 Config API 例如:

curl http://host:8983/solr/mycollection/config -d '{"set-user-property": {"update.autoCreateFields":"false"}}'

對默認(rèn)行為的更改

  • JSON 現(xiàn)在是默認(rèn)的響應(yīng)格式。如果您依賴于 XML 響應(yīng),您現(xiàn)在必須在請求中定義:wt=xml。另外,行縮進(jìn)是默認(rèn)啟用的(indent=on)。
  • sow 參數(shù)(“Split on Whitespace”的縮寫)現(xiàn)在默認(rèn)為 false,允許支持多字同義詞。該參數(shù)與 eDismax 和 standard/“l(fā)ucene” 查詢解析器一起使用。如果此參數(shù)沒有明確指定為:true,查詢文本將不會(huì)在空白上拆分。
  • legacyCloud 參數(shù)現(xiàn)在默認(rèn)為 false。如果副本的項(xiàng)不存在 state.json,則該副本將不會(huì)被注冊。這可能會(huì)影響到復(fù)制副本的用戶,并自動(dòng)將其注冊為分片的一部分。通過使用以下命令在群集屬性中設(shè)置屬性 legacyCloud=true,可以退回到舊的行為:
    ./server/scripts/cloud-scripts/zkcli.sh -zkhost 127.0.0.1:2181 -cmd clusterprop -name legacyCloud -val true
  • 如果 solrconfig 中的 luceneMatchVersion 是 7.0.0 或以上版本,則 eDismax 查詢分析器參數(shù) lowercaseOperators 現(xiàn)在默認(rèn)為 false。luceneMatchVersion 低于7.0.0 的行為是不變的(因此,為 true)。這意味著客戶端必須以大寫的方式發(fā)送布爾運(yùn)算符(如 AND、OR 和 NOT)才能被識(shí)別,或者您必須明確地設(shè)置該參數(shù)為 true。
  • 如果 luceneMatchVersion 是7.0.0 或以上,則 solrconfig 中的 handleSelect 參數(shù)現(xiàn)在默認(rèn)為 false。這會(huì)導(dǎo)致 Solr 忽略 qt 參數(shù),如果它存在于請求中。如果您的請求處理程序沒有前導(dǎo) '/',則可以設(shè)置 handleSelect="true" 或考慮遷移您的配置。該 qt 參數(shù)仍用作指定要使用的請求處理程序(尾部 URL 路徑)的 SolrJ特殊參數(shù)。
  • lucenePlusSort 查詢解析器(又名 “舊 Lucene 查詢解析器”)已被棄用,不再隱式定義。如果你想繼續(xù)使用這個(gè)解析器直到 Solr 8(當(dāng)它將被刪除),你必須將它注冊到您的 solrconfig. xml 中,如:
    <queryParser name="lucenePlusSort" class="solr.OldLuceneQParserPlugin"/>
  • TemplateUpdateRequestProcessorFactory 名稱從 Template更改為 template,AtomicUpdateProcessorFactory 的名稱從 Atomic 改為atomic,此外,TemplateUpdateRequestProcessorFactory 現(xiàn)在使用 {} 而不是 $ {} 作為模板。

棄用和刪除的功能

點(diǎn)字段是默認(rèn)的數(shù)值類型

Solr 全面實(shí)現(xiàn)了 * PointField 類型,取代了基于 Trie * 的數(shù)字字段?,F(xiàn)在所有的 Trie * 字段都被認(rèn)為是不贊成使用的,并將在 Solr 8 中刪除。

如果您在您的模式使用 Trie * 字段,則您應(yīng)該考慮盡快遷移到 PointFields。更改為新的 PointField 類型將要求您重新索引數(shù)據(jù)。

空間領(lǐng)域

以下與空間相關(guān)的字段已被棄用:

  • LatLonType
  • GeoHashField
  • SpatialVectorFieldType
  • SpatialTermQueryPrefixTreeFieldType

改為選擇下列字段類型之一:

  • LatLonPointSpatialField
  • SpatialRecursivePrefixTreeField
  • RptWithGeometrySpatialField

有關(guān)更多信息,請參閱空間搜索部分。

JMX 支持和 MBeans

  • solrconfig.xml 中的 <jmx> 元素已被刪除, 以支持在 solr 中定義的 <metrics> <reporter> 元素。如果缺少 SolrJmxReporter,并且在找到本地 MBean 服務(wù)器時(shí)自動(dòng)添加默認(rèn)的實(shí)例,則會(huì)提供有限的向后兼容性。本地 MBean 服務(wù)器可以通過 solr.in.sh 中的 ENABLE_REMOTE_JMX_OPTS 或者經(jīng)由系統(tǒng)的性能(例如:Dcom.sun.management.jmxremote)被激活。此默認(rèn)實(shí)例將所有注冊表中的所有 Solr 度量標(biāo)準(zhǔn)導(dǎo)出為分層 MBean。還可以通過指定SolrJmxReporter 配置來禁用該行為,該配置使用的布爾型 init 參數(shù)設(shè)置為 false。對于更加 fine-grained 的控制,用戶應(yīng)明確指定至少一個(gè) SolrJmxReporter配置。另請參閱 <metrics> <reporter> 元素部分,其中介紹了如何設(shè)置 Metrics Reporter solr.xml。請注意,后向兼容性支持可能會(huì)在 Solr 8 中刪除。
  • MBean 名稱和屬性現(xiàn)在遵循度量中使用的分層名稱。這也反映在:/admin/mbeans和/admin/plugins 輸出中,并且可以在 UI Plugins 選項(xiàng)卡中觀察到,因?yàn)楝F(xiàn)在所有這些 API 都從度量 API 獲取其數(shù)據(jù)。舊的(大部分是平坦的)JMX 視圖已被刪除。

SolrJ

SolrJ 進(jìn)行了以下更改。

  • HttpClientInterceptorPlugin:現(xiàn)在是 HttpClientBuilderPlugin,必須與一個(gè) SolrHttpClientBuilder 一起工作,而不是一個(gè) HttpClientConfigurer。
  • HttpClientUtil:現(xiàn)在允許通過 SolrHttpClientBuilder 配置 HttpClient 實(shí)例,而不是通過一個(gè) HttpClientConfigurer。使用 env 變量SOLR_AUTHENTICATION_CLIENT_CONFIGURER 不再有效,請使用 SOLR_AUTHENTICATION_CLIENT_BUILDER。
  • SolrClient:實(shí)現(xiàn)現(xiàn)在使用自己的內(nèi)部配置套接字超時(shí)、連接超時(shí)并允許重定向,而不是在生成 HttpClient 實(shí)例時(shí)設(shè)置為默認(rèn)值。在 SolrClient 實(shí)例上使用適當(dāng)?shù)脑O(shè)置器。
  • HttpSolrClient#setAllowCompression 已被移除,必須將壓縮作為構(gòu)造函數(shù)參數(shù)啟用。
  • HttpSolrClient#setDefaultMaxConnectionsPerHost 和 HttpSolrClient#setMaxTotalConnections 已被刪除?,F(xiàn)在這些默認(rèn)值非常高,只能在創(chuàng)建HttpClient 實(shí)例時(shí)通過參數(shù)進(jìn)行更改。

其他的棄用和刪除

  • 模式中的 defaultOperator 參數(shù)不再被支持,改用 q.op 參數(shù)。這個(gè)選項(xiàng)已經(jīng)被棄用了幾個(gè)版本。有關(guān)更多信息,請參見標(biāo)準(zhǔn)查詢解析器參數(shù)部分。
  • 模式中的 defaultSearchField 參數(shù)不再被支持,改用 df 參數(shù)。這個(gè)選項(xiàng)已經(jīng)被棄用了幾個(gè)版本。有關(guān)更多信息,請參見標(biāo)準(zhǔn)查詢解析器參數(shù)部分。
  • mergePolicy、mergeFactor 和 maxMergeDocs 參數(shù)已被刪除并不再支持。你應(yīng)該定義一個(gè) mergePolicyFactory。有關(guān)更多信息,請參見mergePolicyFactory 部分。
  • PostingsSolrHighlighter 已被棄用。建議您改為使用 UnifiedHighlighter。有關(guān)更多信息,請參閱 Unified Highlighter 部分。
  • 索引時(shí)間提升已經(jīng)從 Lucene 中刪除,并且不再可以從 Solr 獲得。如果提供了任何提升,它們將被索引鏈忽略。作為替代,索引時(shí)間評(píng)分因子應(yīng)該在單獨(dú)的字段中編入索引,并使用函數(shù)查詢與查詢評(píng)分相結(jié)合。有關(guān)更多信息,請參閱函數(shù)查詢一節(jié)。
  • StandardRequestHandler 已被棄用,改為使用 SearchHandler。
  • 為了提高集合 API 參數(shù)的一致性,MOVEREPLICA 命令和源的參數(shù)名稱為 fromNode,REPLACENODE 命令中的 target 已被棄用,取而代之的是 sourceNode和 targetNode。舊名稱將繼續(xù)為后向兼容工作,但他們將在 Solr 8 中被刪除。
  • 未使用的 valType 選項(xiàng)已從 ExternalFileField 中刪除,如果在模式中有這個(gè)選項(xiàng),則可以安全地刪除它。

早期的 6.x 版本的主要變化

以下對早期 Solr 6.x 版本中的更改的摘要突出顯示了在本指南的早期版本中列出的 Solr 6.0 和 6.6 之間發(fā)布的重大更改。如上述各節(jié)所述,在 Solr 7 中提到棄用可能會(huì)被取消。

請?jiān)俅巫⒁?,這并不是可能影響您的安裝的所有更改的完整列表,因此如果從早于 6.6 的任何版本升級(jí),強(qiáng)烈建議您查看 CHANGES.txt。

  • Solr 的貢獻(xiàn):map-reduce、morphlines-core 和 morphlines-cell 已被刪除。
  • JSON Facet API 現(xiàn)在使用超級(jí)日志記錄進(jìn)行 numBuckets 基數(shù)計(jì)算,并在將存儲(chǔ)區(qū)過濾之前計(jì)算 mincount 大于1的基數(shù)。
  • 如果您使用歷史日期,特別是 1582 年或之前的日期,則應(yīng)該重新編制索引,以便更好地處理日期。
  • 如果您使用 method=stream 的 JSON Facet API(json.facet),您現(xiàn)在必須設(shè)置 sort='index asc' 以獲取流式傳輸行為;否則不會(huì)流出。提醒:method 是一個(gè)提示,不會(huì)改變其他參數(shù)的默認(rèn)值。
  • 如果您使用 JSON Facet API(json.facet)來面向數(shù)字字段,并且如果您使用 mincount=0 或者如果您設(shè)置了前綴,那么現(xiàn)在將出現(xiàn)錯(cuò)誤,因?yàn)檫@些選項(xiàng)與數(shù)字分面不兼容。
  • Solr 在 INFO 級(jí)別的日志記錄詳細(xì)程度已大大降低,您可能需要更新日志配置以使用 DEBUG 級(jí)別來查看以前在 INFO 級(jí)別上查看的所有日志記錄消息。
  • 我們不再支持 solr.log 和 solr_gc.log 文件在日期戳的副本。如果您依賴于 "日志" 文件夾中的 solr_log_<date> 或 solr_gc_log_<date>,將不再是這種情況。有關(guān)如何在 Solr 6.3 中進(jìn)行日志輪換的詳細(xì)信息,請參閱配置日志記錄一節(jié)。
  • MiniSolrCloudCluster 中的 create / deleteCollection 方法已被棄用。用戶應(yīng)該使用 CollectionAdminRequest API。此外,MiniSolrCloudCluster#uploadConfigDir(File, String)已被棄用,以支持 #uploadConfigSet(Path, String)。
  • 現(xiàn)在,默認(rèn)情況下,bin/solr.in.sh(Windows 上為 bin/solr.in.cmd)已完全注釋。以前,情況并非如此,它具有掩蓋現(xiàn)有環(huán)境變量的作用。
  • _version_ 字段不再被編入索引,現(xiàn)在 indexed=false 默認(rèn)定義,因?yàn)樵撟侄我褑⒂?DocValues。
  • /export 處理程序已被更改,因此它不再返回原始文檔中不存在的數(shù)值字段的零 (0)。這種改變的一個(gè)后果是,你必須知道,如果原始文檔中沒有任何元組,那么一些元組將沒有值。
  • org.apache.solr.util.stats 中與度量相關(guān)的類已被刪除,轉(zhuǎn)而支持 Dropwizard 度量庫。任何使用這些類的自定義插件都應(yīng)該更改為使用度量庫中的等效類。作為其中的一部分,對監(jiān)督狀態(tài) API 的輸出進(jìn)行了以下更改:
    • “totalTime” 指標(biāo)已被刪除,因?yàn)樗辉偈苤С帧?/li>
    • 監(jiān)督狀態(tài) API 中的度量標(biāo)準(zhǔn):“75thPctlRequestTime”、“95thPctlRequestTime”、“99thPctlRequestTime” 和 “999thPctlRequestTime” 已被重命名為:“75thPcRequestTime”、“95thPcRequestTime” 等,以與 Solr 的其他部分輸出的統(tǒng)計(jì)信息保持一致。
    • “avgRequestsPerMinute”、“5minRateRequestsPerMinute” 和 “15minRateRequestsPerMinute” 的度量標(biāo)準(zhǔn)被相應(yīng)的每秒速率 viz 替代,“avgRequestsPerSecond”、“5minRateRequestsPerSecond” 和 “15minRateRequestsPerSecond” 與 Solr其他部分輸出的統(tǒng)計(jì)信息保持一致。
  • 新增了 UnifiedHighlighter。建議您通過設(shè)置 hl.method=unified 和報(bào)告反饋來嘗試 UnifiedHighlighter。這將很有效率并且更快。hl.useFastVectorHighlighter現(xiàn)在被認(rèn)為是代替 hl.method=fastVector。
  • maxWarmingSearchers 參數(shù)現(xiàn)在默認(rèn)為1,而更重要的是,如果超出此限制而不是引發(fā)異常 ,現(xiàn)在就會(huì)阻止它的提交。因此,在重疊提交中不再存在風(fēng)險(xiǎn)。盡管如此,用戶應(yīng)該繼續(xù)避免過多的提交。建議用戶從其 solrconfig. xml 文件中刪除任何預(yù)先存在的 maxWarmingSearchers 條目。
  • 復(fù)雜的短語查詢分析器現(xiàn)在支持領(lǐng)先的通配符。注意其可能的沉重程度,鼓勵(lì)用戶在索引時(shí)間分析中使用 ReversedWildcardFilter。
  • JMX 度量標(biāo)準(zhǔn) “avgTimePerRequest”(以及每個(gè)處理程序的度量 API 中的相應(yīng)度量)過去是基于總累計(jì)時(shí)間和請求數(shù)的簡單 non-decaying 平均值。Codahale度量標(biāo)準(zhǔn)的實(shí)現(xiàn)對這個(gè)值應(yīng)用了指數(shù)衰減,這個(gè)值在最后5分鐘內(nèi)嚴(yán)重偏離了平均值。
  • 并行 SQL 現(xiàn)在使用 Apache Calcite 作為其 SQL 框架。作為此更改的一部分,默認(rèn)聚合模式已更改為 facet 而不是 map_reduce。對 SQL 聚合響應(yīng)和一些 SQL語法更改也進(jìn)行了更改。有關(guān)完整的細(xì)節(jié),請參閱并行 SQL 接口文檔。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)