1. 程式人生 > >elasticsearch 5.x 系列之六 文檔索引,更新,查詢,刪除流程

elasticsearch 5.x 系列之六 文檔索引,更新,查詢,刪除流程

取數 獲取 info ast 負載均衡 blog img 選擇 將在

一、elasticsearch index 索引流程

步驟:
客戶端向Node1 發送索引文檔請求
Node1 根據文檔ID(_id字段)計算出該文檔應該屬於shard0,然後請求路由到Node3的P0分片上。
Node3在P0上執行了請求。如果請求成功,則將請求並行的路由至Node1,Node2的R0上。當所有的Replicas報告成功後,Node3向請求的Node(Node1)發送成功報告,Node1再報告至Client。
當客戶端收到執行成功後,操作已經在Primary shard和所有的replica shards上執行成功了
技術分享圖片

二、 elasticsearch 數據讀取流程

1.客戶端發送Get請求到NODE1。
2.接著NODE1使用文檔的_id決定文檔屬於R0 分片,然後獲取R0的所有副本的地址。這次,它將請求路由至NODE2。
3.NODE2將文檔返回給NODE1,NODE1將文檔返回給客戶端。 對於讀請求,請求節點(NODE1)將在每次請求到來時都選擇一個不同的replica。
shard來達到負載均衡。使用輪詢策略輪詢問所有的replica shards。
技術分享圖片

三、 elasticsearch 數據更新流程

1.客戶端發送更新操作請求至NODE1
2.NODE1將請求路由至NODE3,Primary shard所在的位置
3.NODE3從P0讀取文檔,改變source字段的JSON內容,然後試圖重新對修改後的數據在P0做索引。如果此時這個文檔已經被其他的進程修改了,那麽它將重新執行3步驟,這個過程如果超過了retryon_conflict設置的次數,就放棄。
4.如果NODE3成功更新了文檔,它將並行的將新版本的文檔同步到NODE1和NODE2的replica shards重新建立索引。一旦所有的replica
shards報告成功,NODE3向被請求的節點(NODE1)返回成功,然後NODE1向客戶端返回成功。
技術分享圖片

四、 elasticsearch 刪除數據

(流程和數據索引類似,刪除只是標記這個文檔不可用,並不是立即刪除)
客戶端向 Node 1 發送刪除請求。
節點使用文檔的 _id 確定文檔屬於分片 0 。請求會被轉發到 Node 3`,因為分片 0 的主分片目前被分配在 `Node 3 上。
Node 3 在主分片上面執行請求。如果成功了,它將請求並行轉發到 Node 1 和 Node 2 的副本分片上。一旦所有的副本分片都報告成功, Node 3 將向協調節點報告成功,協調節點向客戶端報告成功。
![](https://images2018.cnblogs.com/blog/1448990/201807/1448990-20180727115901745-1724662407.png)

elasticsearch 5.x 系列之六 文檔索引,更新,查詢,刪除流程