es讀寫和搜索數據的工作原理?


寫數據:

  1. 客戶端向任意節點發送請求,處理請求的節點就是協調節點。
  2. 協調節點將請求路由到主分片節點,
  3. 主分片處理請求后,同步到副本分片
  4. 協調節點返回響應。

   

讀數據:

根據doc id讀取文檔,對應一個doc id。

get某一條數據,寫入了某個doc,這個doc會自動給你分配一個全局唯一的id,也是根據doc id路由到主分片。也可以手動指定doc id,比如訂單id。

  1. 客戶端向任意節點發送請求,處理請求的節點就是協調節點。
  2. 寫文檔的時候,自動分配doc id,或者根據訂單號等指定doc id。協調節點根據唯一的doc id找到對應的主分片和副本分片,將請求路由到宿主節點。讀請求負載均衡默認用round-robin算法。
  3. 接收請求的node返回doc給協調節點
  4. 協調節點返回doc給客戶端。

   

搜索數據:

最強大的就是全文檢索,根據關鍵詞來搜索,找到相關的文檔。

  1. 客戶端向某節點發送請求,該節點變身協調節點,
  2. 協調節點將請求轉發到所有的shard。
  3. query phase:每個shard將自己的搜索結果(doc id)返回給協調節點,由協調節點進行數據的合並、排序、分頁等操作,產生最終結果。
  4. fetch phase:協調節點根據doc id去各個節點拉取實際的doc數據,最終返回給客戶端。

   

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM