簡介
開始學es,我習慣邊學邊記,總結出現的問題和解決方法。本文是在兩臺Linux虛擬機下,安裝了三個節點。本次搭建es同時實踐了兩種模式——單機模式和分佈式模式。條件容許的話,能夠在多臺機器上配置es節點,若是你機器性能有限,那麼能夠在一臺虛擬機上完成多節點的配置。
如圖,是本次3個節點的分佈。html
虛擬機主機名 | IP | es節點 |
---|---|---|
master | 192.168.137.100 | node一、node3 |
slave | 192.168.137.101 | node2 |
index: es裏的index至關於一個數據庫。
type: 至關於數據庫裏的一個表。
id: 惟一,至關於主鍵。
node:節點是es實例,一臺機器能夠運行多個實例,可是同一臺機器上的實例在配置文件中要確保http和tcp端口不一樣(下面有講)。
cluster:表明一個集羣,集羣中有多個節點,其中有一個會被選爲主節點,這個主節點是能夠經過選舉產生的,主從節點是對於集羣內部來講的。
shards:表明索引分片,es能夠把一個完整的索引分紅多個分片,這樣的好處是能夠把一個大的索引拆分紅多個,分佈到不一樣的節點上,構成分佈式搜索。分片的數量只能在索引建立前指定,而且索引建立後不能更改。
replicas:表明索引副本,es能夠設置多個索引的副本,副本的做用一是提升系統的容錯性,當個某個節點某個分片損壞或丟失時能夠從副本中恢復。二是提升es的查詢效率,es會自動對搜索請求進行負載均衡。node
名稱 | 版本 | 下載地址 |
---|---|---|
elasticsearch | 1.7.3 | elasticsearch-1.7.3.tar.gz |
下載後,放到你的目錄下並解壓. 由於咱們要配置包含三個節點的集羣,能夠先將其重命名爲elasticsearch-node1。好比個人是 /home/zkpk/elasticsearch-node1。mysql
(1) 初步修改
打開/home/zkpk/elasticsearch-node1/config目錄下的elasticsearch.yml 文件 ,修改如下屬性值並取消該行的註釋:linux
cluster.name: elasticsearch #這是集羣名字,咱們 起名爲 elasticsearch。es啓動後會將具備相同集羣名字的節點放到一個集羣下。 node.name: "es-node1" #節點名字。 covery.zen.minimum_master_nodes: 2 #指定集羣中的節點中有幾個有master資格的節點。對於大集羣能夠寫3個以上。 discovery.zen.ping.timeout: 40s #默認是3s,這是設置集羣中自動發現其它節點時ping鏈接超時時間,爲避免由於網絡差而致使啓動報錯,我設成了40s。 discovery.zen.ping.multicast.enabled: false #設置是否打開多播發現節點,默認是true。 network.bind_host: 192.168.137.100 #設置綁定的ip地址,這是個人master虛擬機的IP。 network.publish_host: 192.168.137.100 #設置其它節點和該節點交互的ip地址。 network.host: 192.168.137.100 #同時設置bind_host和publish_host上面兩個參數。 discovery.zen.ping.unicast.hosts: ["192.168.137.100", "192.168.137.101","192.168.137.100:9301"] #discovery.zen.ping.unicast.hosts:["節點1的 ip","節點2 的ip","節點3的ip"] 指明集羣中其它可能爲master的節點ip,以防es啓動後發現不了集羣中的其餘節點。第一對引號裏是node1,默認端口是9300。第二個是 node2 ,在另一臺機器上。第三個引號裏是node3,由於它和node1在一臺機器上,因此指定了9301端口。
(2) 進一步修改
拷貝 elasticsearch-node1 整個文件夾,兩份,一份elasticsearch-node2,一份elasticsearch-node3.
將elasticsearch-node2 文件夾copy到另一臺IP爲192.168.137.101的機器上。而在 192.168.137.100 機器上有 node1和node3.sql
對於node3: node3和node1在一臺機器上,node1的配置文件裏端口默認分別是9300和9200,因此要改一下node3配置文件裏的端口,elasticsearch.yml 文件修改以下:數據庫
node.name: "es-node3" transport.tcp.port: 9301 http.port: 9201
對於node2: 對 elasticsearch.yml 修改以下瀏覽器
node.name: "es-node2" network.bind_host: 192.168.137.101 network.publish_host: 192.168.137.101 network.host: 192.168.137.101
注意:
1.對於單機多節點的es集羣,必定要注意修改 transport.tcp.port 和http.port 的默認值保證節點間不衝突。
2. 出現找不到同一集羣中的其餘節點的狀況,檢查下 discovery.zen.ping.unicast.hosts 是否已設置。網絡
編輯 /home/zkpk/elasticsearch-1.7.3/bin/elasticsearch.in.sh, 設置 ES_MIN_MEM和ES_MAX_MEM,確保兩者數值一致,或者能夠在啓動es時指定,負載均衡
[zkpk@master ~]$ cd ~/elasticsearch-node1/bin [zkpk@master bin]$ ./elasticsearch -Xms512m -Xmx512m
若想讓es後臺運行,則curl
[zkpk@master bin]$ ./elasticsearch -d -Xms512m -Xmx512m
前臺運行:能夠經過」CTRL+C」組合鍵來中止運行
後臺運行,能夠經過」kill -9 進程號」中止.也能夠經過REST API接口:
curl -XPOST http://主機IP:9200/_cluster/nodes/_shutdown
來關閉整個集羣,經過:
curl -XPOST http://主機IP:9200/_cluster/nodes/節點標示符(如es-node1)/_shutdown
來關閉單個節點.
BigDesk Plugin : 對集羣中es狀態進行監控。
Elasticsearch Head Plugin: 對ES進行各類操做,如查詢、刪除、瀏覽索引等。
進入到節點elasticsearch-node1/bin路徑,並安裝插件。
[zkpk@master bin]$ ./plugin -install mobz/elasticsearch-head
[zkpk@master bin]$ ./plugin -install lukas-vlcek/bigdesk
打開head瀏覽,瀏覽器輸入http://192.168.137.100:9200/_plugin/head/ ,如圖,
每一個小方塊就是索引分片,能夠看到每一個索引被分紅幾個分片,每一個分片還有它的備份分片,而後存儲在三個節點上。粗框的是主分片,細框的是備份分片。
如今咱們來添加一個索引記錄吧~
curl -XPUT 'http://主機IP:9200/dept/employee/32' -d '{ "empname": "emp32"}'
見 http://www.oschina.net/translate/elasticsearch-getting-started?cmp
(1)點擊 複合查詢[+] ,咱們能夠在 megacorp 索引 (至關於數據庫名)的 employee 類型(至關於表名)下新增一個id爲2的人的信息。
點擊下方的 提交請求 按鈕,頁面右方有回饋信息,「created」表明是否爲新建。添加成功。
點擊 瀏覽數據 ,在左側 索引 下選擇 megacorp,如圖,
能夠看到,一條id爲2的記錄被添加了。
(2)下面咱們修改id爲2 的人的年齡爲15,把about 信息去掉,而且加一項興趣。
提交後,右側有反饋信息,「created」爲 false,由於咱們此次不是新建而是修改。
返回瀏覽數據,id爲2 的記錄,年齡、興趣等均已發生變化。
參考:
http://www.cnblogs.com/huangfox/p/3543351.html
http://www.linuxidc.com/Linux/2015-02/114243.htm
http://my.oschina.net/u/579033/blog/394845?fromerr=Kt60ej6x
文檔總結不易,但願能幫到各位,和各位一塊兒進步,另,轉載請標明出處。