ElasticSearch分片詳解

2021-09-25 10:15:11 字數 1090 閱讀 4882

1.我們能夠傳送請求給集群中任意乙個節點。每個節點都有能力處理任意請求。每個節點都知道任意文件所在的節點

2.新建索引和刪除請求都是寫操作,它們必須在主分片上成功完成才能賦值到相關的複製分片上

3.在主分片和複製分片上成功新建、索引或刪除乙個文件必要的順序步驟:

(1) 客戶端給node1 傳送新建、索引或刪除請求。

(2) 節點使用文件的_id確定文件屬於分片0.**請求到node3,分片0位於這個節點上。

(3) node3在主分片上執行請求,如果成功,它**請求到相應的位於node1和node2的複製節點上。當所有的複製節點報告成功,node3報告成功到請求的節點,請求的節點再報告給客戶端。

(4)客戶端接收到成功響應的時候,文件的修改已經被用於主分片和所有的複製分片,修改生效了。

理解分片-consistency(一致性)

預設主分片在嘗試寫入時需要規定數量(quorum)或過半的分片(可以是主節點或複製節點)可用。這是防止資料被寫入到錯的網路分割槽,規定的數量計算公式如下: int((primary+number_of_replicas)/2)+1 consistency 允許的值為one(只有乙個主分片),all(所有主分片和複製分片)或者預設的quorum或過半分片。 注意:number_of_replicas是在索引中的設定,用來定義複製分片的數量,而不是現在活動的複製節點的數量。如果你定義了索引有3個複製節點那規定數量是: int((primary+3 replicas)/2)+1=3 注意:新索引預設有1個複製分片,這意味著為了滿足quorum的要求需要兩個活動的分片。當然,這個預設設定將阻止我們在單一節點集群中進行操作。為了避開這個問題,規定數量只有在number_of_replicas大於一時才生效。

1.客戶端給node1傳送get請求 2、節點使用文件對的_id確定文件屬於分片0,分片0對應的複製分片在三個節點上都有。此時,它**請求到node2 3、node2返回文件給node1然後返回給客戶端。對於讀請求,為了平衡負載,請求節點會為每個請求選擇不同的分片---它會迴圈所有分片副本。可能的情況是:乙個被索引的文件已經存在於主分片上卻還沒來得及同步到複製分片上。這時複製分片會報告文件未找到,主分片會成功返回文件。一旦索引請求成功返回給使用者,文件則在主分片和複製分片都是可用的。

elasticsearch 分片選擇

相信讀者建立index的時候,一定曾經糾結過分片數應該分配多少。筆者從實用角度來講述一下index分片數量的選擇,index分片數量嚴格來說不能過多,也不能過少,還要兼顧分片平衡以及集群壓力。現在從一些角度來講主分片數應該怎麼選擇。分析 若乙個es集群的節點數為3,則考慮業務擴充套件 無論是容量還是...

Elasticsearch 分片原理1

elasticsearch版本 6.0 elasticsearch基於lucene,採用倒排索引寫入磁碟,lucene引入了按段搜尋的概念,來動態更新索引。乙個lucene索引包含乙個提交點和三個短,如圖 關於索引和分片乙個lucene索引在elasticsearch成為分片,乙個elasticse...

控制Elasticsearch分片和副本的分配

es集群中索引可能由多個分片構成,並且每個分片可以擁有多個副本。通過將乙個單獨的索引分為多個分片,我們可以處理不能在乙個單一的伺服器上面執行的大型索引,簡單的說就是索引的大小過大,導致效率問題。不能執行的原因可能是記憶體也可能是儲存。由於每個分片可以有多個副本,通過將副本分配到多個伺服器,可以提高查...