一、ES的簡介
1、ES是一個開源分佈式全文檢索引擎,每個字段均可被索引、被搜索。
2、使用Lucene作爲核心來實現索引和搜索的功能,通過RESTful API提供簡單的操作方式。
3、數據的存儲、檢索效率高;擴展性強,可以擴展到上百臺服務器,處理PB級別的數據。(1PB=1024T=1024*1024G)
4、ES的節點啓動後,通過多播(multicast)或者單播尋找集羣中的其他節點,並與之建立連接。
5、ES對比關係型數據庫:
索引(index):相當於一個數據庫。根據索引名稱(必須全小寫)進行文檔的增刪改查。一個ES集羣可以創建任意數量的索引。
類型(type):相當於DB的表table。type是index內部的邏輯分區。
文檔(document):相當於DB的行row。document是索引和搜索的原子單位,是包含了n個field字段的容器,json格式。
字段(field):相當於DB的列columns。
6、節點node:
client_node: 協調節點,類似路由,請求分發的作用。
master_node:主節點,數據分片、數據的增刪(es底層沒有更新數據操作,改是先刪後增)、能提供搜索操作
data_node: 數據節點,數據從主節點同步過來。此類型的節點只能做搜索操作。
7、分片shard:shard是一個Lucene實例,分片將索引劃分成多份進行存儲(水平分割)。 每個分片本身也是一個功能完善的獨立“索引”,分片可以被放置到集羣的任何節點上。 ES就是通過分片來實現分佈式。
7.1 主分片和副本分片:ES會對分片做一份或者多份複製分片(replica shard)。默認情況下,ES中的每個索引被分成5個主分片和各一份複製分片,一共10個分片。
7.2 副本分片的作用: 1.提高搜索性能、吞吐量 2.故障遷移:在分片/節點失效的情況下,提供了高可用(所以複製分片與主分片不能在同一個節點上)
8、物理上的ES集羣: 集羣cluster -> 節點node -> 分片shard
索引的邏輯結構: 索引index -> 結構(mapping) -> 類型type -> 字段field