我想了解將多種類型的文檔索引到單個索引的性能影響,其中每種類型的項目數量不平衡(一種類型有數百萬個,其中另一種類型只有數千個文件)。我在我的一些索引中發現了一些問題,並排除了類型是否在單個索引內分別索引(或不是)會對我有所幫助。我能否假設類型是按照關係數據庫的各行分別索引的,而每個表格是有效分離的?ElasticSearch類型和索引性能
如果上面的答案是否定的,而且這些類型實際上都集中在一起,那麼我將闡述我正在做的其他嘗試以獲得更詳細的輸入。
本示例的用例是爲Twitter用戶捕獲推文(爲了清楚起見,將其稱爲所有者)。我有多租戶環境,每個嘰嘰喳喳擁有者一個索引。這就是說,着眼於一個單一的所有者:
- 我捕捉來自各個時間表鳴叫(提到,直接的信息,我的微博,並全面「家」的時間表)成一個單一的指標,與具有各自的時間表類型ElasticSearch中的不同映射
- 每條推文都是指父類型,即使用父映射創作推文(可能是也可能不是所有者)的用戶。對於所有時間線類型,只有一個「用戶」類型
- 我在單個查詢中只搜索一個所有者,因此我不必關心自己搜索多個索引
- 家庭時間表可能會捕捉數以百萬計的推文,其中所有者自己的推文可能會導致數百或數千個用戶文檔定期更新,其Twitter信息時間線之外的信息會定期更新,因此我希望避免(如果可能的話)保持多個索引同一用戶對象的多個副本同步
我注意到很多s即使排除了包含數百萬文檔索引的「家庭時間線」類型,只留下幾千條條目的類型,對數百萬個文檔的索引查詢響應也較低。由於推文和用戶之間的父子關係,我不想將這些類型拆分爲單獨的索引(除非必須)。
有沒有一種方法可以理解,如果問題是與特定索引中的文檔總數,與'has_child'過濾查詢的操作有關,還有其他一些糟糕的查詢或設計方面的問題或某事其他?
任何輸入,將不勝感激。
編輯
澄清鳴叫存儲每時間表的聲明。這意味着爲home_timeline,my_tweets_timeline,mentions_timeline,direct_messages_timeline等定義了ElasticSearch類型,這與您在標準twitter.com UI中看到的內容相對應。所以在推文集之間有一個自然分裂,儘管也有一些重疊。
我已經回去檢查has_child查詢,這是一個明確的紅鯡魚在這一點上。即使查詢僅有幾千行的類型(my_tweets_timeline),對較大索引的基本查詢也會非常慢。
我的答案感覺不完整,但您的問題也是如此:請提供您正在使用的'has_child'查詢,以及不同文檔及其關係的示例。特別是我不確定你的意思是「排除'家庭時間表'類型」 - 我只知道推特和用戶類型,所以使我感到困惑。 –
保羅,我編輯了一些問題來澄清時間表。此外,回過頭來看看查詢,has_child並不比普通查詢更具性能問題。 – Phil
嗯,好吧。看起來這是一個普遍的可擴展性問題。希望別人可以加入進來。+1 –