Elasticsearch 插件 head 的一個截圖

node:即一個 Elasticsearch 的運行實例,使用多播或單播方式發現 cluster 并加入。
● cluster:包含一個或多個擁有相同集群名稱的 node,其中包含一個master node。
● index:類比關系型數據庫里的DB,是一個邏輯命名空間。
● alias:可以給 index 添加零個或多個alias,通過 alias 使用index 和根據index name 訪問index一樣,但是,alias給我們提供了一種切換index的能力,比如重建了index,取名● customer_online_v2,這時,有了alias,我要訪問新 index,只需要把 alias 添加到新 index 即可,并把alias從舊的 index 刪除。不用修改代碼。
● type:類比關系數據庫里的Table。其中,一個index可以定義多個type,但一般使用習慣僅配一個type。
● mapping:類比關系型數據庫中的 schema 概念,mapping 定義了 index 中的 type。mapping 可以顯示的定義,也可以在 document 被索引時自動生成,如果有新的 field,Elasticsearch 會自動推測出 field 的type并加到mapping中。
● document:類比關系數據庫里的一行記錄(record),document 是 Elasticsearch 里的一個 JSON 對象,包括零個或多個field。
● field:類比關系數據庫里的field,每個field 都有自己的字段類型。
● shard:是一個Lucene 實例。Elasticsearch 基于 Lucene,shard 是一個 Lucene 實例,被 Elasticsearch 自動管理。之前提到,index 是一個邏輯命名空間,shard 是具體的物理概念,建索引、查詢等都是具體的shard在工作。shard 包括primary shard 和 replica shard,寫數據時,先寫到primary shard,然后,同步到replica shard,查詢時,primary 和 replica 充當相同的作用。replica shard 可以有多份,也可以沒有,replica shard的存在有兩個作用,一是容災,如果primary shard 掛了,數據也不會丟失,集群仍然能正常工作;二是提高性能,因為replica 和 primary shard 都能處理查詢。另外,如上圖右側紅框所示,shard數和replica數都可以設置,但是,shard 數只能在建立index 時設置,后期不能更改,但是,replica 數可以隨時更改。但是,由于 Elasticsearch 很友好的封裝了這部分,在使用Elasticsearch 的過程中,我們一般僅需要關注 index 即可,不需關注shard。
綜上所述,shard、node、cluster 在物理上構成了 Elasticsearch 集群,field、type、index 在邏輯上構成一個index的基本概念,在使用 Elasticsearch 過程中,我們一般關注到邏輯概念就好,就像我們在使用MySQL 時,我們一般就關注DB Name、Table和schema即可,而不會關注DBA維護了幾個MySQL實例、master 和 slave 等怎么部署的一樣。