W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
為了讓Solr索引更新可見(jiàn)(可搜索),某些類型的提交必須重新打開(kāi)搜索程序到索引的新時(shí)間點(diǎn)視圖。
Solr實(shí)時(shí)獲取功能使檢索(通過(guò) unique-key)任何文檔的最新版本,而無(wú)需重新打開(kāi)一個(gè)搜索的相關(guān)成本。在使用 Solr 作為 NoSQL 數(shù)據(jù)存儲(chǔ)而不僅僅是搜索索引時(shí),這是非常有用的。
實(shí)時(shí)獲取依賴于 "更新日志" 功能,該功能默認(rèn)啟用,并且可以在 solrconfig.xml 中進(jìn)行配置,如下所示:
<updateLog>
<str name="dir">${solr.ulog.dir:}</str>
</updateLog>
實(shí)時(shí)獲取請(qǐng)求可以使用在 Solr 隱式存在的 /get 處理程序來(lái)執(zhí)行-請(qǐng)參見(jiàn)隱式 RequestHandlers,它等效于以下配置:
<requestHandler name="/get" class="solr.RealTimeGetHandler">
<lst name="defaults">
<str name="omitHeader">true</str>
</lst>
</requestHandler>
例如, 如果您使用 bin/solr-techproducts 示例命令啟動(dòng)了Solr,那么您就可以對(duì)一個(gè)新文檔(不需要提交它)進(jìn)行索引 (以提交它),如下所示:
curl 'http://localhost:8983/solr/techproducts/update/json?commitWithin=10000000' \
-H 'Content-type:application/json' -d '[{"id":"mydoc","name":"realtime-get test!"}]'
如果您進(jìn)行正常搜索,則不應(yīng)該找到該文檔:
http://localhost:8983/solr/techproducts/query?q=id:mydoc
...
"response":
{"numFound":0,"start":0,"docs":[]}
但是,如果使用公開(kāi)的實(shí)時(shí)獲取處理程序/get,則仍然可以檢索該文檔:
http://localhost:8983/solr/techproducts/get?id=mydoc
...
{"doc":{"id":"mydoc","name":"realtime-get test!", "_version_":1487137811571146752}}
您也可以通過(guò) ids 參數(shù)和以逗號(hào)分隔的 id 列表或使用多個(gè) id 參數(shù)同時(shí)指定多個(gè)文檔。如果您指定了多個(gè) ID 或使用 ids 參數(shù),則響應(yīng)將模擬正常的查詢響應(yīng),以便現(xiàn)有客戶端更容易解析。
例如:
http://localhost:8983/solr/techproducts/get?ids=mydoc,IW-02
http://localhost:8983/solr/techproducts/get?id=mydoc&id=IW-02
...
{"response":
{"numFound":2,"start":0,"docs":
[ { "id":"mydoc",
"name":"realtime-get test!",
"_version_":1487137811571146752},
{
"id":"IW-02",
"name":"iPod & iPod Mini USB 2.0 Cable",
...
]
}
}
實(shí)時(shí)獲取請(qǐng)求也可以與過(guò)濾器查詢結(jié)合使用,用 fq 參數(shù)指定,就像搜索請(qǐng)求一樣:
http://localhost:8983/solr/techproducts/get?id=mydoc&id=IW-02&fq=name:realtime-get
...
{"response":
{"numFound":1,"start":0,"docs":
[ { "id":"mydoc",
"name":"realtime-get test!",
"_version_":1487137811571146752}
]
}
}
注意:如果您使用的是 SolrCloud,則不要禁用實(shí)時(shí)獲取處理程序/get
,否則任何首項(xiàng)選擇都將導(dǎo)致有關(guān)碎片的所有副本的完全同步。
同樣,復(fù)制副本恢復(fù)也總是從首項(xiàng)那里獲取完整的索引,因?yàn)樵跊](méi)有這個(gè)處理程序的情況下,部分同步是不可能的。
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)系方式:
更多建議: