一、簡介
二、架構

master node:負責 es 集群的節點發現和元數據管理
master-eligible node:有資格競選 Master 的節點,一般奇數個
data node:存儲數據
coordinating node:復制處理客戶端請求的協調節點
ingest node:對索引文檔做預處理工作的節點
shard:數據以shard為單位保存到data node中
primary/replica shard:每個shard可配置一個或多個replica 副本,primary shard會把請求復制到replica shard上
index:存儲數據的基本單位,一個索引相當於一個庫
type:每個index有一個或多個type,一個type相當於一張表;mapping相當於表結構定義
document:往一個index的一個type添加的一行數據稱為document,每個document有多個field,每個field代表document的一個字段值
三、讀寫原理
es寫入數據的過程
-
客戶端選擇一個node發送請求過去,這個node就是coordinating node (協調節點)
-
coordinating node,對document進行路由,將請求轉發給對應的node
-
實際上的node上的primary shard處理請求,然后將數據同步到replica node
-
coordinating node,如果發現primary node和所有的replica node都搞定之后,就會返回請求到客戶端
es讀數據過程
查詢,GET某一條的數據,寫入某個document,這個document會自動給你分配一個全局的唯一ID,同時跟住這個ID進行hash路由到對應的primary shard上面去,當然也可以手動的設置ID
-
客戶端發送任何一個請求到任意一個node,成為coordinate node
-
coordinate node 對document進行路由,將請求轉發到對應的node,此時會使用round-robin隨機輪訓算法,在primary shard 以及所有的replica中隨機選擇一個,讓讀請求負載均衡,
-
接受請求的node,返回document給coordinate note
-
coordinate node返回給客戶端
es搜索數據過程
-
客戶端發送一個請求給coordinate node
-
協調節點將搜索的請求轉發給所有的shard對應的primary shard 或replica shard
-
query phase:每一個shard 將自己搜索的結果(其實也就是一些唯一標識),返回給協調節點,有協調節點進行數據的合並,排序,分頁等操作,產出最后的結果
-
fetch phase ,接着由協調節點,根據唯一標識去各個節點進行拉去數據,最總返回給客戶端
參考
https://mp.weixin.qq.com/s/0LU1cK9_fmzNUBRa3V5rdg
https://niceaz.com/2018/12/09/elasticsearch-architecture/
