2010-09-03 70 views
5

我想我在這裏錯過了一些明顯的東西。我不得不想象很多人將他們的Solr服務器開放給其他開發人員,並且不希望他們能夠修改索引。以只讀模式運行Solr

solrconfig.xml中是否存在可設置爲有效使索引爲只讀的內容?

澄清更新: 我的目標是將Solr與由另一個應用程序管理的現有Lucene索引一起使用。這工作得很好,但我想確保Solr永遠不會嘗試寫入此索引。

+0

爲什麼你說「很多人開放他們的Solr服務器給其他開發者」? – 2010-09-03 16:20:22

+0

那麼,我說我*想象他們做的。假設您的網站內容很多,您已經在使用Solr來推動網站搜索,並希望其他網站能夠搜索您的內容。 Solr可以做得更簡單... – wynz 2010-09-03 21:00:58

回答

2

您可能只需刪除在solrconfig.xml中定義solr.XmlUpdateRequestHandler的行即可。

複製是一種很好的方式來設置只讀,同時能夠進行索引。只需設置一個限制訪問的主節點和一個只讀的從節點(通過從配置中刪除XmlUpdateRequestHandler)即可。從機將從主機複製,但不會直接接受任何索引。

UPDATE

我剛讀,在Solr的1.4,你可以disable component。我只是在/ update requestHandler上嘗試過它,我無法再索引。

+0

顯然,註釋掉請求處理程序不會禁用任何東西,因爲它只是作爲覆蓋(根據http://wiki.apache.org/solr/的SolrRequestHandler)。我想你可以堅持在/更新請求處理程序的虛假類,但這似乎是一個壞主意。 – wynz 2010-09-03 15:55:35

+0

謝謝,它的相關知識... – 2010-09-03 16:07:53

+0

查看我關於禁用組件的更新 – 2010-09-03 16:19:40

6

將Solr實例暴露給公共互聯網是一個壞主意。即使您可以剝離某些組件以使其成爲只讀,但它並非設計時考慮到安全性,而是將其用作內部服務,就像您不會公開RDBMS一樣。

Solr Security wiki page

首先,Solr的不 關注自身安全無論是在 文檔級別或 通信水平。它是強烈推薦 應用程序 包含Solr的防火牆 這樣的唯一客戶端訪問 Solr是你自己的。默認/例如 安裝的Solr允許任何客戶端 可以訪問它來添加,更新和 刪除文件(當然 搜索/讀得),其中包括獲得 Solr的配置和架構 文件和行政用戶 接口。

即使ajax-solr,一個用於JavaScript的Solr客戶端,用於在瀏覽器中運行,recommends talking to Solr through a proxy

guardian.co.uk爲例:衆所周知,they use Solr for searching,但他們建立了一個API讓其他人訪問他們的內容。這樣他們可以definecontrol究竟是什麼以及他們希望人們如何尋找東西。

否則,任何腳本kiddie都可以寫一個簡單的循環來DoS你的Solr實例,並因此打開你的網站。

+0

+1表示和感謝您的鏈接 – 2010-09-03 22:30:03

+0

這些都是很好的建議,希望任何人建立Solr生產會遵循這些建議,但是這並沒有真正解決問題,我將編輯該問題以闡明我的特定用例。 – wynz 2010-09-03 23:12:22

+0

@wynz:好吧,如果僅供內部使用,它很酷。 – 2010-09-04 02:03:43