linux下elasticsearch 安裝、配置及示例


 

簡介 
開始學es,我習慣邊學邊記,總結出現的問題和解決方法。本文是在兩台linux虛擬機下,安裝了三個節點。本次搭建es同時實踐了兩種模式——單機模式和分布式模式。條件允許的話,可以在多台機器上配置es節點,如果你機器性能有限,那么可以在一台虛擬機上完成多節點的配置。 
如圖,是本次3個節點的分布。

hostname IP es節點
master 192.168.137.100 node1、node3
slave 192.168.137.101 node2

 

一、下載及配置

1.幾個基本名詞

index: es里的index相當於一個數據庫。 
type: 相當於數據庫里的一個表。 
id: 唯一,相當於主鍵。 
node:節點是es實例,一台機器可以運行多個實例,但是同一台機器上的實例在配置文件中要確保http和tcp端口不同(下面有講)。 
cluster:代表一個集群,集群中有多個節點,其中有一個會被選為主節點,這個主節點是可以通過選舉產生的,主從節點是對於集群內部來說的。 
shards:代表索引分片,es可以把一個完整的索引分成多個分片,這樣的好處是可以把一個大的索引拆分成多個,分布到不同的節點上,構成分布式搜索。分片的數量只能在索引創建前指定,並且索引創建后不能更改。 
replicas:代表索引副本,es可以設置多個索引的副本,副本的作用一是提高系統的容錯性,當個某個節點某個分片損壞或丟失時可以從副本中恢復。二是提高es的查詢效率,es會自動對搜索請求進行負載均衡。

2.下載

名稱 版本 下載地址
elasticsearch 1.7.3 elasticsearch-1.7.3.tar.gz

下載后,放到你的目錄下並解壓. 因為我們要配置包含三個節點的集群,可以先將其重命名為elasticsearch-node1。比如我的是 /home/zkpk/elasticsearch-node1。

3.修改配置文件

(1) 初步修改 
打開/home/zkpk/elasticsearch-node1/config目錄下的elasticsearch.yml 文件 ,修改以下屬性值並取消該行的注釋:

cluster.name:  elasticsearch
#這是集群名字,我們 起名為 elasticsearch
#es啟動后會將具有相同集群名字的節點放到一個集群下。

node.name: "es-node1"
#節點名字。

discovery.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.

對於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 是否已設置。

二、運行 & 關閉 elasticsearch

1.運行elasticsearch :

編輯 /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后台運行,則

[zkpk@master bin]$ ./elasticsearch -d -Xms512m -Xmx512m

2.關閉elasticsearch:

前台運行:可以通過”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進行各種操作,如查詢、刪除、瀏覽索引等。

1.安裝head插件

進入到節點elasticsearch-node1/bin路徑,並安裝插件。

[zkpk@master bin]$ ./plugin -install mobz/elasticsearch-head

2. 安裝bigdesk

[zkpk@master bin]$ ./plugin -install lukas-vlcek/bigdesk

讓我們看下es頁面吧~~

打開head瀏覽,瀏覽器輸入http://192.168.137.100:9200/_plugin/head/ ,如圖, 


這里寫圖片描述 
圖1

 

每個小方塊就是索引分片,可以看到每個索引被分成幾個分片,每個分片還有它的備份分片,然后存儲在三個節點上。粗框的是主分片,細框的是備份分片。

四、添加索引

現在我們來添加一個索引記錄吧~

1.可以在命令窗口通過命令來添加

curl -XPUT 'http://主機IP:9200/dept/employee/32' -d '{ "empname": "emp32"}'

見 http://www.oschina.net/translate/elasticsearch-getting-started?cmp

2.我們可以在頁面上通過JSON添加

(1)點擊 復合查詢[+] ,我們可以在 megacorp 索引 (相當於數據庫名)的 employee 類型(相當於表名)下新增一個id為2的人的信息。

這里寫圖片描述 

圖2

 

點擊下方的 提交請求 按鈕,頁面右方有回饋信息,“created”代表是否為新建。添加成功。

這里寫圖片描述 

圖3


點擊 瀏覽數據 ,在左側 索引 下選擇 megacorp,如圖,

這里寫圖片描述

圖4


可以看到,一條id為2的記錄被添加了。

(2)下面我們修改id為2 的人的年齡為15,把about 信息去掉,並且加一項興趣。

這里寫圖片描述 

圖5

提交后,右側有反饋信息,“created”為 false,因為我們這次不是新建而是修改。

這里寫圖片描述 

圖6


返回瀏覽數據,id為2 的記錄,年齡、興趣等均已發生變化。

這里寫圖片描述

圖7

本文轉載自:https://blog.csdn.net/sinat_28224453/article/details/51134978


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM