節點(node):
物理概念,乙個執行的elasticearch例項,一般是一台機器上的乙個程序。
分片(shard):
為了支援更大量的資料,索引一般會按某個維度分成多個部分,每個部分就是乙個分片,分片被節點(node)管理。乙個節點(node)一般會管理多個分片,這些分片可能是屬於同乙份索引,也有可能屬於不同索引,但是為了可靠性和可用性,同乙個索引的分片盡量會分布在不同節點(node)上。分片有兩種,主分片和副本分片。
副本(replica):
同乙個分片(shard)的備份資料,乙個分片可能會有0個或多個副本,這些副本中的資料保證強一致或最終一致。
建索引(index)的時候,乙個doc先是經過路由規則定位到主shard,傳送這個doc到主shard上建索引,成功後再傳送這個doc到這個shard的副本上建索引,等副本上建索引成功後才返回成功。
在這種架構中,索引資料全部位於shard中,主shard和副本shard各儲存乙份。當某個副本shard或者主shard丟失(比如機器宕機,網路中斷等)時,需要將丟失的shard在其他node中恢復回來,這時候就需要從其他副本(replica)全量拷貝這個shard的所有資料到新node上構造新shard。這個拷貝過程需要一段時間,這段時間內只能由剩餘主副本來承載流量,在恢復完成之前,整個系統會處於乙個比較危險的狀態,直到failover結束。
這裡就體現了副本(replica)存在的乙個理由,避免資料丟失,提高資料可靠性。副本(replica)存在的另乙個理由是讀請求量很大的時候,乙個node無法承載所有流量,這個時候就需要乙個副本來分流查詢壓力,目的就是擴充套件查詢能力。
index一共有3個shard,每個shard除了primary shard外,還有乙個replica shard。當node 3機器宕機或磁碟損壞的時候,首先確認p3已經不可用,重新選舉r3位primary shard,此shard發生主備切換。然後重新找一台機器node 7,在node7 上重新啟動p3的新replica。由於資料都會存在本地磁碟,此時需要將shard 3的資料從node 6上拷貝到node7上。
為了保證可靠性,就需要冗餘shard,會導致更多的物理資源消耗。這種思想的另外一種表現形式是使用雙集群,集群級別做備份。
這種架構中為了保證可用性和可靠性,需要雙集群或者replica才能用於生產環境,elasticsearch使用的就是這種架構方式。
b+樹,root節點能存更多資料,且支援between查詢。
mysql只有term dictionary這一層,是以b-tree 排序的方式儲存在磁碟上的。檢索乙個term需要若干次的random access的磁碟操作。而lucene在term dictionary 的基礎上新增了term index來加速檢索,term index以樹的形式快取在記憶體中。從term index查到對應的term dictionary的block 位置之後,再去磁碟上找 term,大大減少了磁碟的random access次數。
term index在記憶體中是以fst(finite state transducers)的形式儲存的,其特點是非常節省記憶體。term dictionary在磁碟上是以分 block 的方式儲存的,乙個 block內部利用公共字首壓縮,比如都是ab開頭的單詞就可以把 ab 省去。這樣term dictionary可以比b-tree更節約磁碟空間。
總結elasticsearch支援以上兩種的聯合索引方式,如果查詢的 filter 快取到了記憶體中(以 bitset 的形式),那麼合併就是兩個bitset的and。如果查詢的 filter 沒有快取,那麼就用skip list的方式去遍歷兩個on disk的posting list。
elasticsearch相關筆記
elasticsearch kibana nginx將原索引的資料reindex到新索引 post reindex dest 刪除原索引 delete vehicle info將新索引資料再次reindex回舊索引 post reindex dest 刪除新索引 然後在後台 bulk資料時,加上新的...
elasticsearch 優化相關
es寫入過程關鍵步驟 資料寫入index buffer緩衝和translog日誌檔案。index buffer indices.memory.index buffer size 大小預設是heap的10 最小值為48m。每隔一秒鐘 index.refresh interval index buffe...
(整理)elasticsearch相關概念
參考 elasticsearch權威指南 elasticsearch sql elasticsearch查詢 elasticsearch multifields說明 23種非常有用的elasticsearch查詢例子 推薦書籍 elasticsearch伺服器開發 資料同步外掛程式 待補充index...