2020-07-13:es是去查id再根據id去查數據庫這種方式好,仍是全部數據都放es,直接去查es好?

福哥答案2020-07-13:前端

有人以爲第一種方法好,也有人以爲第二種方法好。
若是搜索字段遠小於顯示字段,好比搜索字段爲3個,顯示字段有20個,這個時候用第一種方法好。es+hbase,通常這樣搭配。
若是搜索字段跟顯示字段接近,或者一條【行記錄】的數據量並不大,這個時候用第二種方法好。數據庫

回答1:
ES 的批量修改和併發控制比較頭疼,不如直接用數據庫來的舒服,可是若是用了數據庫就要作數據同步。視具體場景而定吧。併發

回答2:
咱們是第一種方法,ES 只放 ID+列表項+搜索項,列表是 ES 直出,詳情 MySQL 根據 ID 查詢。性能

回答3:
咱們 2 種都有。場景:
1.搜索商品:所有存 ES,從 ES 出;商品信息相對固定,又搜索頻率高,直接拿 ES 快速搜索。
2.搜索文章:文章內容存 ES,從 ES 檢索出 ID,再撈一遍數據庫,同時 with 當前用戶數據(瀏覽量、點贊、收藏、熱度等等);文章搜索頻率比較低,又側重不停變化的用戶數據,須要拿數據庫的最新數據。url

回答4:
從 ES 中根據 name 和 age 去搜索,拿到的結果可能就 20 個 doc id,而後根據 doc id 到 HBase 裏去查詢每一個 doc id 對應的完整的數據,給查出來,再返回給前端。
而寫入 ES 的數據最好小於等於,或者是略微大於 ES 的 Filesystem Cache 的內存容量。
而後你從 ES 檢索可能就花費 20ms,而後再根據 ES 返回的 id 去 HBase 裏查詢,查 20 條數據,可能也就耗費個 30ms。
若是你像原來那麼玩兒,1T 數據都放 ES,可能會每次查詢都是 5~10s,而如今性能就會很高,每次查詢就是 50ms。.net

es我不熟悉,答案不免會出錯,請直接評論。blog


評論內存

相關文章
相關標籤/搜索