2016-03-01 67 views
3

我們爲企業提供大量網站,每家企業都會有多種文件類型,他們可能希望通過ES進行索引和搜索。應該創建多個文檔類型還是多個索引?

通常,文檔類型每個業務具有的數量小於20,每種類型的可具有小於100K的文件(通常要少得多)。

我不知道我應該如何設置這些網站的數據?我應該將它們放入單獨的索引中,還是應該將它們全部用不同的文檔類型粘貼到相同的索引中?或者如果還有別的東西?

或者,我甚至應該儘可能對索引中小型網站做不同的處理?如果我計劃增長到5萬個網站,我應該準備哪些最壞的情況?

回答

3

如果您創建一個多次映射類型的一個索引,你將有你需要確保在兩種不同類型的映射具有相同名稱的字段有兩種不同類型的一大制約因素,即你不能有名爲blablaCount的字段在一個映射類型中是long,在相同索引內的另一個映射類型中是double

您的續航里程可能會有所不同,但自ES 2.0和great mapping refactoring之後,通常會有recommended帶有多個索引和每個索引一個映射類型。

我會做的是爲每個索引創建多個索引和一個映射/文檔類型,然後您只需將屬於給定業務的所有索引與alias進行分組,以便如果您需要查詢所有索引給定的業務,你可以簡單地查詢該業務的別名。

另一種選擇是把所有企業的所有文件在同一組索引,只是區分每個企業使用其businessId領域term查詢,或者甚至routingbusinessId

然而,在你的情況,因爲每個企業沒有那麼多的文件,它可能是資源打造全套指數爲每個業務的浪費,所以我可能會選擇第二個選項去,即創建一組索引,每個索引都有自己的映射/文檔類型,然後將所有業務的所有文檔存儲在這些索引中。

+0

非常感謝。由於每個企業都將定義自己的文檔類型(不同的字段名稱和字段類型等),因此似乎不可能讓他們共享相同的一組索引,除非我們將每個業務生成的文檔類型放在不同的文檔類型中。這似乎是唯一的選擇留給我的是每個網站使用不同的索引?每個人似乎都會說它會造成開銷的負擔,只是你想我看到多少開銷? – mr1031011

+0

好的,如果每個企業都有他們想要創建的映射的總體緯度以及他們的領域的類型和命名,那麼確實,最好給他們自己的一套指數,對每個企業來說,就是這樣。這取決於我們正在討論的企業數量,如果每個企業的指數超過20個,羣集可以快速佔用資源。但是,如果事先知道每個索引可能不包含那麼多文檔,那麼您可能很幸運,並且每個索引只需要一到兩個主分片,而不是默認的五個。 – Val

+0

另外,考慮到你似乎在做生意,我強烈建議你閱讀Wordpress如何進入他們的Elasticsearch遷移:[here](http://fr.slideshare.net/tlovett1/modernizing-wordpress-搜索與彈性搜索)和[這裏](http://gibrown.com/2014/01/09/scaling-elasticsearch-part-1-overview/),然後按照後者的所有鏈接;) – Val

相關問題