elasticsearch 的一些理解

es官方中文文檔

es 對比 solr

  • solr 使用zookeeper 進行分佈式管理 es 自身帶有分佈式協調功能
  • solr 帶有各種數據格式 es 只支持json
  • es 接近實時搜索

 

 

概念理解

  • 集羣 : 集羣是由一個或者多個擁有相同 cluster.name 配置的節點組成
  • 節點 : 每一個運行的ES實例都是一個節點
  • 分片 :
    • 一個分片是一個底層工作單元 , 保存了全部數據的一部分, 每一個分片就是一個 Lucene 的實例 。當你的集羣擴大或者縮小的時候 ES 會自動在各個節點當中遷移分片 。
    • 一個主分片最大能夠存儲 Integer.MAX_VALUE - 128 個文檔 。
    • 索引內任意一個文檔都對應着一個主分片 。 所以主分片的數量決定着索引能夠保存的最大數據量
    • 在索引建立的時候確定了主分片數目後不能被修改 。索引默認會被分配5個主分片
    • 添加一臺機器 status 爲 green
    • 應爲ES會將分片均勻的分佈在各個節點 , 每一個分片又能調用該節點的資源 。所以水平擴容越多效率越高
  • 倒排索引 : 就是將文檔中的拆成一個個詞 , 每一個詞對應着一個貨多個文檔 。這裏就是要用中文分詞器的原因了
    • 倒排索引被寫入磁盤後是永遠不可變的
    • (1)不需要鎖。如果你從來不更新索引,你就不需要擔心多進程同時修改數據的問題
    • (2)一旦索引被讀入內核的文件系統緩存,便會留在哪裏,由於其不變性。只要文件系統緩存中還有足夠的空間,那麼大部分讀請求會直接請求內存,而不會命中磁盤
# 例如,假設我們有兩個文檔,每個文檔的 content 域包含如下內容
1:The quick brown fox jumped over the lazy dog
2:Quick brown foxes leap over lazy dogs in summer
Term      Doc_1  Doc_2
-------------------------
Quick   |       |  X
The     |   X   |
brown   |   X   |  X
dog     |   X   |
dogs    |       |  X
fox     |   X   |
foxes   |       |  X
in      |       |  X
jumped  |   X   |
lazy    |   X   |  X
leap    |       |  X
over    |   X   |  X
quick   |   X   |
summer  |       |  X
the     |   X   |
------------------------

 

 對於各個元數據的理解

  • 很多人認爲 將 es 對比爲關係型數據庫 , index = 數據庫 , type = 數據表 , fild = 數據字段 。對也不對 。
  • 數據是存在索引裏面 其實不是的 。索引只是一個命名空間數據是存儲在 節點當中的分片(share)裏面 這裏的數據指的就是文檔。 而每一個分片就是一個 lucene的實例 。 索引是由多個分片組成的 。
  • 文檔 :每一個文檔都對應着一個主分片 index + type + id 能定位到一個確定的文檔
  • index 當中有很多種type 比如一個商品有很多的分類 phone , apple ,等。
  • 每一種類型有很多 fild 比如 apple 的 顏色 重量 等等 。 從這裏去理解層級關係可以類比 。 但是存儲結構是完全不一樣 。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章