solr cloud 更新 solrconfig 配置_Solr各版本新特性「4.x,5.x,6.x,7.x」
一.Solr4.x新特性
1.近實(shí)時(shí)搜索
Solr的近實(shí)時(shí)搜索【Near Real-Time,NRT】功能實(shí)現(xiàn)了文檔添加到搜索的快速進(jìn)行,以應(yīng)對(duì)搜索快速變化的數(shù)據(jù)。
2.原子更新與樂觀并發(fā)
原子更新功能允許客戶端應(yīng)用對(duì)已有文檔上進(jìn)行添加、更新、刪除和對(duì)字段增值等操作,而且無需重新發(fā)送整個(gè)文檔。當(dāng)存在兩個(gè)請(qǐng)求同時(shí)更改同一個(gè)文檔時(shí),Solr使用樂觀機(jī)制防止不兼容的更新。簡單來說就是Solr使用特殊的_version_版本字段來確保文檔的安全更新語義。兩個(gè)請(qǐng)求中后提交更改的請(qǐng)求將會(huì)獲得一個(gè)過時(shí)的版本【這個(gè)版本是兩請(qǐng)求都未執(zhí)行之前的版本,然后先提交的請(qǐng)求會(huì)執(zhí)行并修改版本號(hào)】,所以會(huì)執(zhí)行失敗【請(qǐng)求執(zhí)行之前需要先確認(rèn)版本,只有版本一致才可以執(zhí)行請(qǐng)求】。
3.實(shí)時(shí)GET功能
無論文檔是否已經(jīng)提交到索引,使用實(shí)時(shí)GET功能都可以使用唯一標(biāo)識(shí)符檢索最新版本的索引【事務(wù)日志提供支撐】。這與使用行鍵【row key】檢索數(shù)據(jù)的Cassandra的鍵-值存儲(chǔ)方式類似。在Solr4之前,除非文檔提交到Lucene的索引,否則是檢索不出來的。且提交很花費(fèi)時(shí)間,影響查詢性能。
4.使用事務(wù)日志實(shí)現(xiàn)寫持續(xù)性
當(dāng)文檔發(fā)送到Solr進(jìn)行索引時(shí),會(huì)被寫到事務(wù)日志中,以防止服務(wù)器發(fā)生故障造成數(shù)據(jù)丟失。Solr的事務(wù)日志處在客戶端應(yīng)用與Lucene索引之間,對(duì)實(shí)時(shí)GET功能提供必要的支持,使其可以不考慮文檔是否已經(jīng)提交到Lucene,直接通過唯一標(biāo)識(shí)符進(jìn)行檢索文檔。Solr的事務(wù)日志解除了更新可見性與更新持久性之間的綁定。也就是說,文檔可以持久存儲(chǔ),但不出現(xiàn)在搜索結(jié)果中。事務(wù)日志可以控制提交的文檔在搜索結(jié)果中出現(xiàn)的時(shí)機(jī),避免在提交之前因服務(wù)器出現(xiàn)故障而導(dǎo)致數(shù)據(jù)丟失。
5.使用Zookeeper實(shí)現(xiàn)簡易分片和復(fù)制
在Solr4.x之前,需手動(dòng)進(jìn)行擴(kuò)容。在Solr4.x之后,SolrCloud讓擴(kuò)容變得簡單和自動(dòng)化。在Solr中,Zookeeper負(fù)責(zé)指定分片代表與分片副本,并對(duì)服務(wù)請(qǐng)求可用的服務(wù)器機(jī)芯跟蹤。SolrCloud與Zookeeper是綁定的,因此SolrCloud的啟動(dòng)無需做任何額外的配置和安裝。
6.在以前的版本中,Solr主目錄有配置文件solr.xml進(jìn)行配置。從Solr4.4之后,內(nèi)核可以被自動(dòng)發(fā)現(xiàn),不再需要在solr.xml中進(jìn)行配置。
二.Solr5.x新特性
1.schema文件改名為managed-schema。
2.Solr4.x中的deprecated被去掉。
3.從Solr5開始,Solr不再以war的形式發(fā)布,Solr已然成為了一個(gè)獨(dú)立的Java服務(wù)端應(yīng)用,已經(jīng)包括了start和stop腳本,并支持Unix和Windows平臺(tái)。
4.solr.xml中的單位從cores變?yōu)閟olrcloud。
5.在Solr5.x中引入的Streaming表達(dá)式允許查詢Solr并將結(jié)果作為數(shù)據(jù)流進(jìn)行排序和聚合。
三.Solr6.x新特性
1.對(duì)Solr5.x中引入的Streaming表達(dá)式增加幾種新的表達(dá)式類型:
>使用類似MapReduce的并行表達(dá)式來加快high-cardinality字段的吞吐量。
>守護(hù)程序表達(dá)式以支持持續(xù)推送或拉取流。
>高級(jí)并行關(guān)系代數(shù),如分布式連接、交集、聯(lián)合和補(bǔ)充。
>發(fā)布/訂閱消息。
>用于從其他系統(tǒng)中提取數(shù)據(jù)并與Solr索引中的文檔連接的JDBC連接。
2.并行SQL接口
構(gòu)建在Streaming表達(dá)式的基礎(chǔ)上,Solr6.x中的新增功能是一個(gè)并行SQL接口,可以將SQL查詢發(fā)送到Solr。SQL語句被即時(shí)編譯為Streaming表達(dá)式,提供可用于Streaming表達(dá)式請(qǐng)求的全部聚合。包含一個(gè)JDBC驅(qū)動(dòng)程序,它允許使用SQL客戶端和數(shù)據(jù)庫可視化工具查詢Solr索引并將數(shù)據(jù)導(dǎo)入到其它系統(tǒng)中。
3.跨數(shù)據(jù)中心復(fù)制
使用主動(dòng)-被動(dòng)模型,SolrCloud集群可以被復(fù)制到另一個(gè)數(shù)據(jù)中心,并用一個(gè)新的API進(jìn)行監(jiān)控。
4.QueryParse圖
一個(gè)新的圖形查詢解釋器可以使Solr文檔建模的定向【循環(huán)】圖的遍歷查詢成為可能。
5.DocValues
在Solr示例配置集中的大多數(shù)非文本字段類型現(xiàn)在默認(rèn)為使用DocValues。
6.需要使用Java8
Solr6.x【SolrJ客戶端】的Java最低支持的版本是Java8。
7.索引格式更改
Solr6.x不支持讀取Lucene/Solr4.x以及更早版本的索引。如果索引中仍存在舊的4.x格式的字段,必須運(yùn)行Solr5.x附帶的Lucene IndexUpgrader。另外,使用Solr5.x充分優(yōu)化索引,以確保只包含一個(gè)最新的索引段。
8.默認(rèn)為托管模式
當(dāng)solrconfig.xml沒有明確定義時(shí),Solr的默認(rèn)行為依賴于solrconfig.xml定義的luceneMatchVersion。當(dāng)luceneMatchVersion<6.0時(shí),ClassicIndexSchemaFactory將繼續(xù)用于向后兼容,否則將使用ManagedIndexSchemaFactory實(shí)例。這種變化最顯著的影響是現(xiàn)有的solrconfig.xml文件內(nèi)容被修改為luceneMatchVersion>=6.0,但沒有明確配置ClassicIndexSchemaFactory,并將schema.xml文件自動(dòng)升級(jí)為managed-schema文件。并且將默認(rèn)啟動(dòng)通過Schema API進(jìn)行的模式修改。
9.默認(rèn)的相似性改變
當(dāng)Schema沒有明確地定義全局時(shí),Solr的默認(rèn)行為將依賴于solrconfig.xml中指定的luceneMatchVersion。當(dāng)luceneMatchVersion<6.0時(shí),將使用ClassicSimilarityFactory實(shí)例,否則將使用SchemaSimilarityFactory實(shí)例。可以在SchemaSimilarityFactory聲明中指定defaultSimFromFiledType init選項(xiàng)來更改此行為。.值得注意的是,這種改變意味著用戶可以利用每個(gè)字段類型的相似性聲明,并且需要明確聲明SchemaSimilaryFactory的全局用法。
10.副本和碎片刪除命令更改
DELETESHARD和DELETEREPLICA修改為默認(rèn)刪除任何復(fù)制副本的實(shí)例目錄、數(shù)據(jù)目錄和索引目錄。
11.刪除facet.date.*參數(shù)
Solr3.x中被廢棄的facet.date參數(shù)【以及相關(guān)facet.date.*參數(shù)】已被完全刪除。
四.Solr7.x新特性
1.復(fù)制模式
直到Solr7.x,SolrCloud模型允許任何復(fù)制副本在領(lǐng)導(dǎo)者丟失時(shí)成為領(lǐng)導(dǎo)者。這對(duì)大多數(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副本。
2.自動(dòng)縮放
Solr自動(dòng)縮放是Solr中的一個(gè)新功能套件,用于管理SolrCloud集群更加簡單和自動(dòng)化。Solr自動(dòng)縮放的核心是為用戶提供一個(gè)規(guī)則語法來定義在集群中分發(fā)節(jié)點(diǎn)和碎片的首選項(xiàng)和策略,目的是在集群中保持平衡。從Solr7.x開始,Solr將在確定創(chuàng)建或移動(dòng)各種Collection API命令的新碎片或副本放置到何處時(shí)考慮策略和首選項(xiàng)規(guī)則。
3.新的默認(rèn)配置集
data_driven_configset與basic_configset已被刪除,取而代之的是_defaultconfigset。sample_techproducts_configset還被保留了下來,專門與example/exampledocs目錄中的Solr附帶的示例文檔一起使用。當(dāng)創(chuàng)建一個(gè)新的collection時(shí),如果不指定configSet,默認(rèn)_default將被使用。如果使用SolrCloud,_defaultconfigSet會(huì)自動(dòng)上傳到zookeeper。如果使用單獨(dú)模式,instanceDir將會(huì)自動(dòng)創(chuàng)建,使用_defaultconfigSet作為基礎(chǔ)。
Solr7.x之前的版本【以6.6版本為例】:
Solr7.x版本:
4.無模式的改進(jìn)
默認(rèn)情況下,傳入的字段將被索引為text_general【可以修改】。該字段的名稱將與文檔中定義的字段名稱相同。復(fù)制字段規(guī)則將被插入到模式中,以將新的text_general字段復(fù)制到具有名稱的新字段。這個(gè)字段的類型是一個(gè)strings字段【允許多值】。默認(rèn)文本字段的前256【可以修改】個(gè)字符將被插入到新的字符串字段中。
由于復(fù)制字段規(guī)則會(huì)降低索引的速度并增加索引大小,所以建議只在需要時(shí)使用復(fù)制字段。如果不需要對(duì)字段進(jìn)行排序或分面,則應(yīng)該刪除自動(dòng)生成的復(fù)制字段規(guī)則。可以禁用update.autoCreateFields屬性禁用自動(dòng)字段創(chuàng)建。使用命令修改配置:curl http://host:8983/solr/mycollection/config -d '{"set-user-property":{"update.autoCreateFields":"false"}}'。
5.對(duì)默認(rèn)行為的更改
>JSON現(xiàn)在是默認(rèn)的響應(yīng)格式。如果依賴XML響應(yīng),現(xiàn)在必須在請(qǐng)求中定義:wt=xml。另外,行縮進(jìn)是默認(rèn)啟用的【indent=on】。
>sow參數(shù)【Split on Whitespace】現(xiàn)在默認(rèn)為false,允許支持多字同義詞。該參數(shù)與eDismax和standard/lucene查詢解析器一起使用。如果此參數(shù)沒有明確指定為true,查詢文本將不會(huì)在空白上拆分。
>legacyCloud參數(shù)現(xiàn)在默認(rèn)為false。如果副本的項(xiàng)不存在state.json,則該副本將不會(huì)被注冊(cè)。這可能會(huì)影響到復(fù)制副本的用戶,并自動(dòng)將其注冊(cè)為分片的一部分。通過使用一下命令在集群屬性中設(shè)置屬性legacyCloud=true,可以退回到舊的行為。命令如下:./sever/scripts/cloud-scripts/zkcli.sh -zkhost 127.0.0.1:2181 -cmd clusterprop -name legacyCloud -val true。
>如果solrconfig中的luceneMatchVersion是7.0.0或以上版本則eDismax查詢分析器參數(shù)lowercaseOperator默認(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ù)默認(rèn)為false。這會(huì)導(dǎo)致Solr忽略qt參數(shù),如果它存在于請(qǐng)求中,請(qǐng)求處理程序沒有前導(dǎo)'/',則可以設(shè)置handleSelect="true"或者考慮遷移配置。該qt參數(shù)仍用作指定要使用的請(qǐng)求處理程序的Solr特殊參數(shù)。
>lucenePlusSort查詢解析器【舊的lucene查詢解析器】已被棄用,不再隱式定義。若想繼續(xù)使用這個(gè)解析器直到Solr8【該版本將刪除這個(gè)解析器】,必須將它注冊(cè)到solrconfig.xml中。如下:。
>TemplateUpdateRequestProcessorFactory名稱從Template更改為template,AtomicUpdateProcessorFactory的名稱從Atomic改為atomic,此外,TemplateUpdateRequestProcessorFactory現(xiàn)在使用{}而不是${}作為模板。
五.備注
1.對(duì)于Solr升級(jí),將數(shù)據(jù)重新編入索引被認(rèn)為是最佳做法。如果重新索引不可行,請(qǐng)注意,Solr一次只能升級(jí)一個(gè)大版本【例如從6.x升級(jí)到7.x】。因此,Solr6.x索引與Solr7.x兼容,但Solr5.x索引則不會(huì)與Solr7.x兼容。
總結(jié)
以上是生活随笔為你收集整理的solr cloud 更新 solrconfig 配置_Solr各版本新特性「4.x,5.x,6.x,7.x」的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 财经自媒体怎么申请?
- 下一篇: redis java 监听_从零手写实现