回覆列表
  • 1 # YAO大神

    你知道的,為了搜尋······

    我們一直認為ES中的“index”類似於關係型資料庫的“database”,而“type”相當於一個數據表。ES的開發者們認為這是一個糟糕的認識。例如:關係型資料庫中兩個資料表示是獨立的,即使他們裡面有相同名稱的列也不影響使用,但ES中不是這樣的。

    我們都知道elasticsearch是基於Lucene開發的搜尋引擎,而ES中不同type下名稱相同的filed最終在Lucene中的處理方式是一樣的。舉個例子,兩個不同type下的兩個user_name,在ES同一個索引下其實被認為是同一個filed,你必須在兩個不同的type中定義相同的filed對映。否則,不同type中的相同欄位名稱就會在處理中出現衝突的情況,導致Lucene處理效率下降。

    去掉type能夠使資料儲存在獨立的index中,這樣即使有相同的欄位名稱也不會出現衝突,就像ElasticSearch出現的第一句話一樣“你知道的,為了搜尋····”,去掉type就是為了提高ES處理資料的效率。

    除此之外,在同一個索引的不同type下儲存欄位數不一樣的實體會導致儲存中出現稀疏資料,影響Lucene壓縮文件的能力,導致ES查詢效率的降低。

  • 中秋節和大豐收的關聯?
  • 為什麼有的人可以做到比別人樂觀很多?