Elasticsearch是一個開源的可高度擴展的全文搜索和分析引擎。它能夠近乎實時的存儲、查詢和分析數據。基於Lucene的分佈式引擎。node
一個cluster能夠包含一個或多個node,這些nodes共同維護全部的數據並提供聯合索引和搜索功能。一個cluster能夠被一個默認名字爲elasticsearch
的標示符所肯定,一個node不能同時存在於兩個cluster中。網絡
node是cluster中的一個節點,它用於存儲數據,參與集羣的索引和搜索功能。跟cluster同樣,node在啓動的時候,會由一串隨機的Marvel字符來做爲此node的默認名字。elasticsearch
能夠把一個node加入到一個指定名字的cluster中。默認狀況下,node會加入到一個名爲elasticsearch
的cluster中。也就是說,若是在網絡中啓動若干個node,並假設它們能夠發現彼此,則這些node將會自動加入一個名爲elasticsearch
的cluster。分佈式
若是隻啓動一個node,那麼這個node會造成一個默認名爲elasticsearch
的cluster。code
index是有相同特徵的document的集合。例如,能夠爲用戶數據創建一個index,爲產品數據創建另一個index。一個index可被一個字符串(必須是小寫字母)
所標識,能夠經過這個標識引用index來查詢、更新、刪除其中的document。一個cluster中能夠建立多個index。索引
在一個index中,能夠定義一個或多個type。type是index的一個邏輯分區,語義徹底取決於你。能夠爲一組具備共同字段的document定義一個type。假設你運行了一個博客平臺並將全部的數據存在於一個index中,在此index中,能夠爲用戶數據定義一個type,爲博客數據定義一個type,爲評論數據定義另一個type。字符串
document是可以被索引的信息的基本單元,例如一個document能夠存放一條客戶信息,另一個document存放一條產品信息。docuemnt中的數據是以JSON的形式展示的。一個index/type能夠存儲多個document。博客
注意:儘管一個document在物理上是駐留在index中,事實上一個document必須被索引到index中的一個type上
。產品
document是不可變的,它不能被修改只能被替換。ast
elasticsearch能夠把一個index分紅多片,每片稱爲一個shard
。當建立index時,能夠指定shard的數量,一個shard能夠存放在cluster中的任意node上。爲了防止某些緣由而致使一個node/shard出現故障,elasticsearch容許保留shard的一個或多個副本,這個副本稱爲replica shard
。
注意:replica shard不能跟它的原始shard存放在一個node上。
總得來講,每一個index可被分紅多個shards。每一個index能夠被備份0次(無replicas)或屢次。備份index後,每一個index會包含primary shards
和replica shards
。在建立index時,能夠設置每一個index的shards和replicas的數量。一旦index被建立,不能再修改primary shards的數量,但能夠隨時動態修改replicas的數量。
默認狀況下,若是你的cluster有兩個node,每一個index會被分配5個primary shards和5個replica shards(1個完整副本)。