2012-10-11 34 views
1

我正在尋找使用Solr或ElasticSearch的客戶端JavaScript應用程序。在一個例子中,我可以直接調用API。使用Solr或ElasticSearch作爲API的最佳實踐

我對這個概念相當陌生,想到的第一件事之一就是如何避免安全相關的問題,例如發出針對API的刪除命令的人?將搜索API隱藏在某個圖層後面是否合適?就像該客戶端與之交互的小PHP或Sinatra API一樣?

謝謝!

回答

1

您可以添加充當代理層,但要做到這一點是使用複製(兩個或多個實例 - http://wiki.apache.org/solr/SolrReplication)的最佳方式

這樣,你總是有一個有效的,強大的,通常私人主索引,您可以在其上添加,刪除和執行任何您想要的操作,以及只是主索引副本的副索引,它只提供查詢API。

+0

標準做法是讓主從機進行搜索嗎?我知道Solr認爲索引大量數據會產生巨大的性能問題,我的理解是ES的優勢之一。 – bikedorkseattle

+0

我認爲這是一個標準,但也許我錯了。我只和Solr一起工作過,其中不超過800k文檔 - 我想嘗試ES,但在能夠之前去了另一個工作崗位。我們總是使用主從設計,以確保安全和易於使用。你可以在主人中索引和做任何你想要的東西,奴隸總是可以爲公衆所用。然後,當主人是好的,奴隸複製(真的很快)。該設計允許你永遠不會讓你的公共索引繁忙,並且不準備被查詢 – dievardump

3

將搜索API隱藏在圖層後面是否合適?就像客戶端與之交互的小PHP或Sinatra API一樣?

如果您關心安全性,答案無疑是 - YES
NodeJS非常適合那些東西:授權客戶端請求,將查詢發送到elasticsearch/solr,並將其發送回客戶端(,在返回的路上有或沒有數據處理)。如果你有很多連接(nodejs非常適合),PHP是不太合適的。


查看elasticsearch博客的this article的第二部分。有一個很好的代理插圖,以及一個簡單的Ruby code for the proxy。從那裏

相關報價:

這一切都通過利用該elasticsearch暴露了一個HTTP API的事實是可能的。通過在它前面放置一個代理,我們可以將認證和授權例程分離爲單獨的組件,從而有效地分解堆棧中的責任,並允許更好地測試各個部件。

+0

我怎麼能忽略nodejs :) – bikedorkseattle

+0

是的。 NodeJS正是爲了這種情況。速度,併發性和簡單性。你也可以將它作爲一個單獨的進程在你主站點的不同cpu上運行 - 這將爲你提供一個非常簡單且易於維護的服務器。 – oori