2017-03-02 35 views
2

我剛剛認識elasticsearch,如果它適合我​​的情況下,在所有我想知道的數據訪問:分離與elasticsearch

考慮一個系統,公司(含多個員工)可以註冊並管理他們的客戶,並將文件發送給他們的客戶。

現在,我想讓公司搜索他們的文件 - 但只有他們的文件,而不是其他公司的文件。換句話說:如何分離這些公司的數據以進行搜索?這怎麼可以用elasticsearch實現?

這種分離是否由elasticsearch本身處理?即我的系統中的公司和彈性搜索的相關用戶之間有一些映射。 或者這是由我的系統的後端處理?即後端以某種方式決定(如何?)只顯示該特定公司的搜索結果。因此,只有一個用戶,即我的系統的後端,可以訪問和過濾彈性搜索的結果。但這是否明智?

我確信有關於此的大量信息。請給我一個提示,因爲我不知道要搜索什麼。例如,搜索彈性搜索認證/授權,只會產生關於誰可以訪問搜索系統的結果 - 而不是解決這種分離的模式。

在此先感謝!

回答

4

Elasticsearch本身不支持授權和身份驗證,您需要通過插件添加它,其中有兩個我知道的插件。 Shield是官方解決方案,它是X-Pack的一部分,如果你想使用它,你需要支付Elastic。 SearchGuard是一個可以購買企業升級的開源替代品。 這兩個都可以讓你爲不同的用戶定義細粒度的訪問權限。你可能想要做的是給每個公司一個他們自己的文件索引,然後限制他們的用戶只能讀/寫該索引。或者,如果您絕對需要一個索引中的所有文檔,則還可以添加文檔級別限制,以便每個人都查詢相同的索引,但僅獲取爲其公司返回的結果。取決於你期望提供服務的公司數量可能會更有意義,以便不會有太多索引和碎片,但我懷疑每個公司的索引是最好的選擇。

如果沒有這些插件,你需要求助於http層,例如一個nginx反向代理,它根據url中包含的索引名稱來過濾請求,但我會嚴厲地建議,這樣的痛苦很多!

+0

謝謝你的回答,Sönke!讓我進一步閱讀,我想我已經明白了。祝你有個愉快的夜晚! –