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)行為的更改
棄用和刪除的功能
點(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 接口文檔。
更多建議: