最近因爲要涉及一些安全運維的工做,最近在研究Elasticsearch,爲ELK作相關的準備。因而把本身學習的一些隨筆分享給你們,進行學習,在部署經常使用插件的時候因爲是5.0版本的Elasticsearch踩了很是多的坑,寫給你們避免你們再踩坑。python
Elasticsearch的啓動十分簡單,只須要平時在Linux下運行便可:git
cd elasticsearch/bin ./elasticsearch &
Elasticsearch有兩個王牌的工具,通常你們都會用到。一個是head,一個是bigdesk。不過不幸的是目前最新的Elastic 5.x 系列,這兩個工具都不能像以前同樣插件化集成,但仍可使用,須要一些特殊的方法。github
對於head工具,咱們可使用npm命令來來啓動,而且因爲Elasticsearch在5.0版本有嚴格的跨域限制,因此咱們也須要修改Elasticsearch的跨域策略來容許head工具管理Elasticsearch。數據庫
配置Elasticsearch文件下config文件夾下elasticsearch.yml文件,在配置末尾添加如下內容:npm
http.cors.enabled: true http.cors.allow-origin: "*"
同時head工具使用npm進行啓動,沒法進行插件化,具體方法以下:跨域
git clone git://github.com/mobz/elasticsearch-head.git cd elasticsearch-head npm install npm run start
對於bigdesk因爲也沒法插件化集成,因此須要使用python來發布。安全
git clone https://github.com/hlstudio/bigdesk cd bigdesk/_site/ python -m SimpleHTTPServer
這塊是困擾我比較久的地方,查閱了不少資料,若是術語不能理解那麼咱們沒法正確且合理的維護Elasticsearch集羣,我是經過Head插件來進行學習和理解的。bash
Node:咱們能夠理解爲一臺服務器和一個虛擬機,是集羣的最小分配部分,一個Elasticsearch服務器能夠爲一個Node。同網段的Node能夠經過head來發現並進行管理。服務器
Index:至關於一個索引,一般對應關係型數據庫中的Database,咱們將一大類一般分紅一個Index。咱們在使用head去建立Index的時候,我發現又存在兩個關鍵名詞須要理解。cors
shards:爲了提升查詢效率,一個Index要被切成多份,分別存儲在多個Node上,同時爲了保證高可用,配置Index時候還須要配置replica。舉個例子,對於一個Index可能有5個shards,然而萬一這五個shards丟了怎麼辦,最樸素的思想是我把這5個shards再複製一份再分別保存到其餘節點上。因而在Elasticsearch集羣中咱們常常看到這張圖,我從網上找了一個生產環境的集羣來理解。
其中加粗的是分片是主分片,未加粗的分片是replica。做爲備份。
後續準備總結一下Elasticsearch常見的API,以及調用關係。