W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
為了讓Solr索引更新可見(可搜索),某些類型的提交必須重新打開搜索程序到索引的新時間點視圖。
Solr實時獲取功能使檢索(通過 unique-key)任何文檔的最新版本,而無需重新打開一個搜索的相關成本。在使用 Solr 作為 NoSQL 數據存儲而不僅僅是搜索索引時,這是非常有用的。
實時獲取依賴于 "更新日志" 功能,該功能默認啟用,并且可以在 solrconfig.xml 中進行配置,如下所示:
<updateLog>
<str name="dir">${solr.ulog.dir:}</str>
</updateLog>
實時獲取請求可以使用在 Solr 隱式存在的 /get 處理程序來執(zhí)行-請參見隱式 RequestHandlers,它等效于以下配置:
<requestHandler name="/get" class="solr.RealTimeGetHandler">
<lst name="defaults">
<str name="omitHeader">true</str>
</lst>
</requestHandler>
例如, 如果您使用 bin/solr-techproducts 示例命令啟動了Solr,那么您就可以對一個新文檔(不需要提交它)進行索引 (以提交它),如下所示:
curl 'http://localhost:8983/solr/techproducts/update/json?commitWithin=10000000' \
-H 'Content-type:application/json' -d '[{"id":"mydoc","name":"realtime-get test!"}]'
如果您進行正常搜索,則不應該找到該文檔:
http://localhost:8983/solr/techproducts/query?q=id:mydoc
...
"response":
{"numFound":0,"start":0,"docs":[]}
但是,如果使用公開的實時獲取處理程序/get,則仍然可以檢索該文檔:
http://localhost:8983/solr/techproducts/get?id=mydoc
...
{"doc":{"id":"mydoc","name":"realtime-get test!", "_version_":1487137811571146752}}
您也可以通過 ids 參數和以逗號分隔的 id 列表或使用多個 id 參數同時指定多個文檔。如果您指定了多個 ID 或使用 ids 參數,則響應將模擬正常的查詢響應,以便現有客戶端更容易解析。
例如:
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",
...
]
}
}
實時獲取請求也可以與過濾器查詢結合使用,用 fq 參數指定,就像搜索請求一樣:
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,則不要禁用實時獲取處理程序/get
,否則任何首項選擇都將導致有關碎片的所有副本的完全同步。
同樣,復制副本恢復也總是從首項那里獲取完整的索引,因為在沒有這個處理程序的情況下,部分同步是不可能的。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯系方式:
更多建議: