elasticsearch 父子索引問題

用慣了關係型數據庫再轉到 es對父子關係習焉不察。 以前不曾踏入此坑,因此就斗膽用了。

父子關係致使磁盤佔用分佈不均

以相冊和圖片爲例。相冊有可見屬性,圖片沒有,需從相冊哪裏繼承,若是是 mysql 用關係型數據庫這樣的思想正常不過。
可是 es 上父與子必須在同一個 shard 上,因相冊圖片有多有少,文檔分佈不均那也是先花後果的事。node

負載不均衡

若是用戶進行了批量寫操做,那麼同一相冊的圖片必在同一機器。以前常常發生 es response timeout。mysql

查看 節點狀態: CURL _nodes/stats/thread_pool?prettysql

一臺機器 bulk queue 滿,其餘兩臺爲空。數據庫

cpu 使用至關不合理

後來重建了索引,在同一的壓力下,沒有父子關係的索引 cpu 佔用一直在 5% 如下,使用父子關係索引 cpu 不曾降過100%。
相差甚大,令人汗顏~!code

操做麻煩

子文檔必須找到父文檔的 id 才能進行找到響應的 shard 而後進行相應的操做。繼承

【總結】索引

若是能夠不用那就千萬不要用父子文檔,雖然沒有明文限制,就像 mysql like 查詢,能不用就千萬不用~!圖片

相關文章
相關標籤/搜索