2016-01-14 72 views
1

我使用elasticsearch查詢股票報價。我的瀏覽器調用彈性簇,它返回<img>標籤內部的url列表。瀏覽器然後調用圖像(相關報價的股票圖表)。這些映像位於單獨的Apache 2 http服務器上。兩臺服務器都是相同的Centos四核2.0Ghz,16GB RAM,1Tb HD。Elasticsearch作爲圖像服務器與Apache

從閱讀previous SO posts它似乎可以在Elasticsearch中存儲base64圖像。

是否有人在elasticsearch中創建了生產映像服務器,並且可能將基準與靜態Web服務器進行了比較?在我的情況下,圖像是80至150 kb。

我的具體問題是(1)在我的文檔圖中將圖像作爲二進制和彈性答覆返回base64圖像,而不是<img>標籤,然後需要另一個調用Apache? (2)elasticsearch是否可以與靜態nginx或apache圖像服務器相媲美?

回答

1

Elasticsearch是一個搜索引擎(除其他外),擅長爲您的數據提供快速搜索。它是不是內容服務器

我會在ES中存儲圖像的唯一原因是如果我需要search for similar images。就你而言,你似乎願意使用Elasticsearch作爲內容服務器來檢索你的圖像,如你現在對第二臺Apache服務器所做的那樣,這將更好地存儲在內容交付網絡(CDN)上。

儘管如此,如果你有幾個股票報價文件,也就是說不是數百萬的話,那麼在ES中存儲圖像的base64可能就沒問題了。

要做的最好的事情總是試試看看你的集羣如何處理它。也許對於你的具體用例來說,它是完全沒問題的。只是你會在ES上增加額外的負擔,而這首先不是要處理的。

例如,如果返回十個結果,您的回覆將從幾KB增加到至少1 MB,並且您的用戶需要等待該轉移才能看到一些結果,而如果您存儲了您的圖像可以在其他地方顯示,您至少可以向用戶快速顯示結果,並讓瀏覽器異步處理圖像檢索,而不必關心它。

+0

很高興知道,非常感謝您的解釋。 – Chris

1

儘管可以將二進制數據存儲在搜索索引中,但您應該避免爲大型二進制文件執行此操作。

將二進制文件存儲爲內存中的fielddata(FieldCache)可以使您的系統快速從堆空間運行,而將它們存儲爲基於磁盤的fielddata(DocValues) - 使ElasticSearch更像一個典型的「列存儲」 - 將加載全部文件的圖像到文件系統緩存。 (DocValues記錄在here)。

因此,從nginx或Apache提供服務和緩存圖像仍然是更好的選擇。

+0

好的,很高興知道,謝謝! – Chris