1.1.簡介
1.1.1.Elastic
Elastic官網:https://www.elastic.co/cn/
1.1.2.Elasticsearch
Elasticsearch官網:https://www.elastic.co/cn/products/elasticsearch
Elasticsearch具備以下特點:
- 分佈式,無需人工搭建集羣(solr就需要人爲配置,使用Zookeeper作爲註冊中心)
- Restful風格,一切API都遵循Rest原則,容易上手
- 近實時搜索,數據更新在Elasticsearch中幾乎是完全同步的。
1.2.安裝和配置
1.2.1.新建一個用戶leyou
elasticsearch默認不允許以root賬號運行。
創建用戶:
useradd leyou
設置密碼:
passwd leyou
切換用戶:
su - leyou
1.2.2.上傳安裝包,並解壓
我們將安裝包上傳到:/home/leyou目錄
解壓縮:
tar -zxvf elasticsearch-6.2.4.tar.gz
我們把目錄重命名:
mv elasticsearch-6.2.4/ elasticsearch
進入,查看目錄結構:
1.2.3.修改配置
進入config目錄:cd config
需要修改的配置文件有兩個:
- jvm.options
Elasticsearch基於Lucene的,而Lucene底層是java實現,因此我們需要配置jvm參數。
編輯jvm.options:
vim jvm.options
默認配置如下:
-Xms1g
-Xmx1g
內存佔用太多了,調小一些:
-Xms512m
-Xmx512m
- elasticsearch.yml
vim elasticsearch.yml
- 修改數據和日誌目錄:
path.data: /home/leyou/elasticsearch/data # 數據目錄位置
path.logs: /home/leyou/elasticsearch/logs # 日誌目錄位置
把data和logs目錄修改指向了elasticsearch的安裝目錄。但是這兩個目錄並不存在,因此我們需要創建出來。
進入elasticsearch的根目錄,然後創建:
mkdir data
mkdir logs
- 修改綁定的ip:
network.host: 0.0.0.0 # 綁定到0.0.0.0,允許任何ip來訪問
默認只允許本機訪問,修改爲0.0.0.0後則可以遠程訪問
elasticsearch.yml的其它可配置信息:
屬性名 | 說明 |
---|---|
cluster.name | 配置elasticsearch的集羣名稱,默認是elasticsearch。建議修改成一個有意義的名稱。 |
node.name | 節點名,es會默認隨機指定一個名字,建議指定一個有意義的名稱,方便管理 |
path.conf | 設置配置文件的存儲路徑,tar或zip包安裝默認在es根目錄下的config文件夾,rpm安裝默認在/etc/ elasticsearch |
path.data | 設置索引數據的存儲路徑,默認是es根目錄下的data文件夾,可以設置多個存儲路徑,用逗號隔開 |
path.logs | 設置日誌文件的存儲路徑,默認是es根目錄下的logs文件夾 |
path.plugins | 設置插件的存放路徑,默認是es根目錄下的plugins文件夾 |
bootstrap.memory_lock | 設置爲true可以鎖住ES使用的內存,避免內存進行swap |
network.host | 設置bind_host和publish_host,設置爲0.0.0.0允許外網訪問 |
http.port | 設置對外服務的http端口,默認爲9200。 |
transport.tcp.port | 集羣結點之間通信端口 |
discovery.zen.ping.timeout | 設置ES自動發現節點連接超時的時間,默認爲3秒,如果網絡延遲高可設置大些 |
discovery.zen.minimum_master_nodes | 主結點數量的最少值 ,此值的公式爲:(master_eligible_nodes / 2) + 1 ,比如:有3個符合要求的主結點,那麼這裏要設置爲2 |
1.3.運行
進入elasticsearch/bin目錄,可以看到下面的執行文件:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-9Z808DS7-1583325758286)(assets/1528553103468.png)]
然後輸入命令:
./elasticsearch
發現報錯了,啓動失敗:
1.3.1.錯誤1:內核過低
使用的是centos6,其linux內核版本爲2.6。而Elasticsearch的插件要求至少3.5以上版本。不過沒關係,我們禁用這個插件即可。
修改elasticsearch.yml文件,在最下面添加如下配置:
bootstrap.system_call_filter: false
1.3.2.錯誤2:文件權限不足
再次啓動,又出錯了:
[1]: max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
我們用的是leyou用戶,而不是root,所以文件權限不足。
首先用root用戶登錄。
然後修改配置文件:
vim /etc/security/limits.conf
添加下面的內容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096
1.3.3.錯誤3:線程數不夠
剛纔報錯中,還有一行:
[1]: max number of threads [1024] for user [leyou] is too low, increase to at least [4096]
這是線程數不夠。
繼續修改配置:
vim /etc/security/limits.d/90-nproc.conf
修改下面的內容:
* soft nproc 1024
改爲:
* soft nproc 4096
1.3.4.錯誤4:進程虛擬內存
[3]: max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
vm.max_map_count:限制一個進程可以擁有的VMA(虛擬內存區域)的數量,繼續修改配置文件, :
vim /etc/sysctl.conf
添加下面內容:
vm.max_map_count=655360
然後執行命令:
sysctl -p
1.3.5.重啓終端窗口
所有錯誤修改完畢,一定要重啓你的 Xshell終端,否則配置無效。
1.3.6.啓動
再次啓動,終於成功了!
可以看到綁定了兩個端口:
- 9300:集羣節點間通訊接口
- 9200:客戶端訪問接口
在瀏覽器中訪問:http://服務器IP:9200
1.4.安裝kibana
1.4.1.安裝
因爲Kibana依賴於node,我們的虛擬機沒有安裝node,而window中安裝過。所以我們選擇在window下使用kibana。
最新版本與elasticsearch保持一致
1.4.2.配置運行
配置
進入安裝目錄下的config目錄,修改kibana.yml文件:
修改elasticsearch服務器的地址:
elasticsearch.url: "http://192.168.56.101:9200"
運行
進入安裝目錄下的bin目錄:
雙擊運行:
發現kibana的監聽端口是5601
訪問:http://127.0.0.1:5601
1.5.安裝ik分詞器
1.5.1.安裝
上傳zip包,解壓到服務器Elasticsearch目錄的plugins目錄中:
使用unzip命令解壓:
unzip elasticsearch-analysis-ik-6.3.0.zip -d ik-analyzer
然後重啓elasticsearch: