比如上圖所示,開始設定為5個分片,在單個節點上,後來擴容到5個節點,每個節點有乙個分片。如果繼續擴容,是不能自動切分進行資料遷移的。官方文件的說法是分片切分成本和重新索引的成本差不多,所以建議乾脆通過介面重新索引。
。 elasticsearch 禁止同乙個分片的主分片和副本分片在同乙個節點上,所以如果是乙個節點的集群是不能有副本的。
恢復以及容災
分布式系統的乙個要求就是要保證高可用。前面描述的退出流程是節點主動退出的場景,但如果是故障導致節點掛掉,elasticsearch 就會主動allocation。但如果節點丟失後立刻allocation,稍後節點恢復又立刻加入,會造成浪費。elasticsearch的恢復流程大致如下:
但如果該節點上的分片沒有副本,則無法恢復,集群狀態會變為red,表示可能要丟失該分片的資料了。
分布式集群的另外乙個問題就是集群整個重啟後可能導致不預期的分片重新分配(部分節點沒有啟動完成的時候,集群以為節點丟失),浪費頻寬。所以 elasticsearch 通過以下靜態配置(不能通過api修改)控制整個流程,以10個節點的集群為例:
比如10個節點的集群,按照上面的規則配置,當集群重啟後,首先系統等待 minimum_master_nodes(6)個節點加入才會選出master, recovery操作是在 master節點上進行的,由於我們設定了 recover_after_nodes(8),系統會繼續等待到8個節點加入, 才開始進行recovery。當開始recovery的時候,如果發現集群中的節點數小於expected_nodes,也就是還有部分節點未加入,於是開始recover_after_time 倒計時(如果節點數達到expected_nodes則立刻進行 recovery),5分鐘後,如果剩餘的節點依然沒有加入,則會進行資料recovery。
Elasticsearch 搜尋資料
elasticsearch 修改資料 elasticsearch 搜尋資料 現在我們已經了解了基本知識,讓我們嘗試使用更真實的資料。我們提供了一些虛構的客戶銀行賬戶資訊,格式如下所示 curl localhost 9200 cat indices?v 響應 health status index u...
二 elasticsearch入門(資料)
程式中大多的實體或物件能夠被序列化為包含鍵值對的json物件,鍵 key 是字段 field 或屬性 property 的名字,值 value 可以是字串 數字 波爾型別 另乙個物件 值陣列或者其他特殊型別,比如表示日期的字串或者表示地理位置的物件。accounts 文件元資料 乙個文件不只有資料。...
elasticSearch修改資料
elasticsearch幾乎能實時提供資料操作和搜尋功能。預設情況下,從開始索引 更新 刪除資料到出現搜尋結果的時間可以認為需要一秒的時間。這是與sql等其他平台的重要區別,其中資料在事務完成後可以立即使用。在上節中我們給索引建立了乙個文件,命令為 put customer doc 1 prett...