W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
當(dāng)使用傳統(tǒng)索引分片時(shí),您需要考慮如何查詢文檔。
強(qiáng)烈建議您在需要擴(kuò)展或擴(kuò)展時(shí)使用SolrCloud。下面描述的設(shè)置是遺留的,并且在SolrCloud存在之前使用。SolrCloud提供了一個(gè)真正的分布式功能集,支持諸如自動(dòng)路由、leader選擇,開(kāi)放式并發(fā)和其他理想的分布式系統(tǒng)中所期望的健全性檢查。
本頁(yè)面上的所有內(nèi)容都是針對(duì)特定于分布式搜索的傳統(tǒng)設(shè)置。嘗試 SolrCloud 的用戶不應(yīng)遵循下面的任何步驟或信息。
更新重新排序(即副本A可能會(huì)看到更新X然后是Y,副本B可能會(huì)看到更新Y然后是X)。deleteByQuery也以相同的方式處理重新排序,以確保副本是一致的。碎片的所有副本都是一致的,即使這些更新在不同的副本上以不同的順序到達(dá)。
當(dāng)不使用SolrCloud時(shí),您需要在服務(wù)器場(chǎng)的每個(gè)分片上獲取所有文檔的索引。Solr僅在SolrCloud模式下以其真實(shí)形式支持分布式索引(路由)。
在傳統(tǒng)分布式模式下,Solr不計(jì)算通用術(shù)語(yǔ)/文檔頻率。對(duì)于大多數(shù)大規(guī)模實(shí)施來(lái)說(shuō),Solr 在碎片級(jí)計(jì)算 TF/IDF 是不太可能的。但是,如果您的集合在服務(wù)器上的分布嚴(yán)重偏離,則可能會(huì)在搜索中發(fā)現(xiàn)具有誤導(dǎo)性的關(guān)聯(lián)結(jié)果。一般來(lái)說(shuō),最好是隨機(jī)分發(fā)文件到你的碎片。
如果查詢請(qǐng)求包含shards參數(shù),則Solr服務(wù)器將請(qǐng)求分布到作為參數(shù)列出的所有分片中。該shards參數(shù)使用以下語(yǔ)法:
host:port/base_url,host:port/base_url*
例如,下面的shards參數(shù)會(huì)導(dǎo)致搜索分布在兩個(gè)Solr服務(wù)器上:solr1和solr2,它們都在端口8983上運(yùn)行:
http://localhost:8983/solr/core1/select?shards=solr1:8983/solr/core1,solr2:8983/solr/core1&indent=true&q=ipod+solr
與其要求用戶顯式包含shards參數(shù),不如將此參數(shù)配置為 solrconfig. xml 的 RequestHandler 部分中的默認(rèn)值。
不要將shards參數(shù)添加到標(biāo)準(zhǔn)請(qǐng)求處理程序中;這樣做可能會(huì)導(dǎo)致搜索查詢進(jìn)入無(wú)限循環(huán)。相反,請(qǐng)定義一個(gè)使用該shards參數(shù)的新請(qǐng)求處理程序,并將分布式搜索請(qǐng)求傳遞給該處理程序。
使用傳統(tǒng)模式,只分布查詢請(qǐng)求。這包括使用支持分布式搜索的標(biāo)準(zhǔn)組件對(duì) SearchHandler (或從 org.apache.solr.handler.component.SearchHandler 擴(kuò)展的任何處理程序)的請(qǐng)求。
與SolrCloud模式一樣,當(dāng)shards.info=true時(shí),分布式響應(yīng)將包含關(guān)于分片的信息(每個(gè)分片表示邏輯上不同的索引或物理位置)
以下組件支持分布式搜索:
在Solr中分布式搜索有以下限制:
以前的一個(gè)限制是,TF/IDF相關(guān)性計(jì)算只使用分片本地統(tǒng)計(jì)。這仍然是默認(rèn)情況。如果您的數(shù)據(jù)不是隨機(jī)分布的,或者需要更精確的統(tǒng)計(jì)數(shù)據(jù),那么請(qǐng)記住配置ExactStatsCache。
就像在SolrCloud模式中一樣,inter-shard請(qǐng)求可能導(dǎo)致分布式死鎖,可以按照“分布式請(qǐng)求”一節(jié)中的說(shuō)明來(lái)避免 。
對(duì)于簡(jiǎn)單的功能測(cè)試,最簡(jiǎn)單的方法是在不同的端口上設(shè)置兩個(gè)本地Solr服務(wù)器。(當(dāng)然,在生產(chǎn)環(huán)境中,這些服務(wù)器將部署在不同的計(jì)算機(jī)上。)
mkdir example/nodes
mkdir example/nodes/node1
# Copy solr.xml into this solr.home
cp server/solr/solr.xml example/nodes/node1/.
# Repeat the above steps for the second node
mkdir example/nodes/node2
cp server/solr/solr.xml example/nodes/node2/.
# Start first node on port 8983
bin/solr start -s example/nodes/node1 -p 8983
# Start second node on port 8984
bin/solr start -s example/nodes/node2 -p 8984
bin/solr create_core -c core1 -p 8983 -d sample_techproducts_configs
# Create a core on the Solr node running on port 8984
bin/solr create_core -c core1 -p 8984 -d sample_techproducts_configs
bin/post -c core1 example/exampledocs/monitor.xml -port 8983
bin/post -c core1 example/exampledocs/monitor2.xml -port 8984
curl http://localhost:8983/solr/core1/select?q=*:*&wt=xml&indent=true
這應(yīng)該帶回一個(gè)文件。在端口8984上的節(jié)點(diǎn)上搜索:curl http://localhost:8984/solr/core1/select?q=*:*&wt=xml&indent=true
這也應(yīng)該帶回一個(gè)單一的文件?,F(xiàn)在使用瀏覽器或者curl.在兩臺(tái)服務(wù)器上進(jìn)行分布式搜索,在下面的例子中,傳遞一個(gè)額外的參數(shù)'fl'來(lái)將返回的字段限制為id和name。curl http://localhost:8983/solr/core1/select?q=*:*&indent=true&shards=localhost:8983/solr/core1,localhost:8984/solr/core1&fl=id,name
這應(yīng)該包含兩個(gè)文件,如下所示:<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">8</int>
<lst name="params">
<str name="q">*:*</str>
<str name="shards">localhost:8983/solr/core1,localhost:8984/solr/core1</str>
<str name="indent">true</str>
<str name="fl">id,name</str>
<str name="wt">xml</str>
</lst>
</lst>
<result name="response" numFound="2" start="0" maxScore="1.0">
<doc>
<str name="id">3007WFP</str>
<str name="name">Dell Widescreen UltraSharp 3007WFP</str>
</doc>
<doc>
<str name="id">VA902B</str>
<str name="name">ViewSonic VA902B - flat panel display - TFT - 19"</str>
</doc>
</result>
</response>
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: