Elasticsearch筆記四之配置引數與核心概念
在es根目錄下有一個config目錄,在此目錄下有兩個檔案分別是elasticsearch.yml和logging.yml。
logging.yml是日誌檔案,es也是使用log4j來記錄日誌的,我在此檔案中配置日誌級別。
elasticsearch.yml是es的基本配置檔案es的引數都在這個檔案中,我們這裡結合此檔案來介紹es的核心概念和引數。
1:叢集
node.master: true表示此節點有資格競爭成為主節點。
cluster.name: elasticsearch表示es叢集的名稱可以自行更改
discovery.zen.ping.multicast.enabled: false 叢集的自動發現機制,false不啟動
discovery.zen.ping.unicast.hosts: ["host1","host2:port"] 告訴從節點主節點的位置,預設是9300埠。
Es叢集由多個節點組成,其中一個為主節點其他為從節點。從節點通過競爭來確定哪個是主節點,一般在叢集中第一個啟動的符合條件的就是主節點。主節點負責管理叢集狀態包括管理分片和副本的狀態以及節點的增加和刪除。
Es叢集具有去中心化的概念,我們可以訪問叢集中的任何一個節點來操作整個叢集,不管它是主節點還是從節點只要安裝了相關外掛就行。
同一個網段內的es節點會自動互相感知自動組成叢集。
自動發現機制
Es是基於P2P的系統,當叢集啟動後會先通過廣播尋找存在的節點,再通過多播協議進行節點間的通訊進而自動組建es叢集,同時也支援節點之間的通訊。
同一網段內節點組建叢集,首先啟動自動發現機制另外節點的叢集名稱要一致
discovery.zen.ping.multicast.enabled: true
cluster.name: elasticsearch
如果不同網段的節點要組建叢集首先各個節點禁用自動發現機制然後給從節點指定主節點的位置,預設是9300埠。
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["host1","host2:port"]
檢視叢集狀態
{
"cluster_name" :"shb01",
"status" :"green",
"timed_out" :false,
"number_of_nodes": 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 0,
"active_shards" :0,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0
}
2:shards分片
index.number_of_shards: 5 分片數
Es中索引庫會被拆分成多個分片,各個分片會儲存在不同的節點上以提高叢集的儲存能力從而構成分散式的儲存和分散式的查詢。
通過index.number_of_shards引數指定分片數預設是5,分片數一旦指定叢集啟動後不能動態的修改。
3:replicas副本
index.number_of_replicas:1副本數,預設為1
當某個節點宕機或被刪除後可以通過副本進行恢復,另外也可以提高查詢效率分流查詢實現負載均衡。分片和其副本不會被儲存與同一個節點上,如果只有一個節點則沒有副本。
4:持久化方式
gateway.type:local
索引的持久化方式預設是local本地方式,也可以存放在hdfs中。
/usr/local/elasticsearch-1.4.4/data/elasticsearch/nodes/0/indices/shb01/0
第一個0表示叢集中的節點編號,最後一個0表示分片。我的節點上一共有0到4,共5個分片。
5:transport
互動方式,es叢集與客戶端使用tcp協議互動同時也支援http協議
transport.tcp.port: 9300 節點之間通訊使用此埠
http.port: 9200 http請求使用9200埠
我們在啟動es時可以看到es在監控這兩個節點
6:recovery
資料恢復與重新分佈,當有節點加入或退出時es會根據機器的負載對索引分片進行重新分配,掛了的節點在重啟後也會進行恢復。
7:其他引數
node.data: true 為true表示此節點可以用來儲存資料。預設true
http.enabled: false 預設不禁用http訪問
http.max_content_length: 100mb 限制_bulk批處理的最大資料量。
bootstrap.mlockall: true 禁用記憶體互動