2021-05-12 14:32:11
Elasticsearch介紹和安裝詳解
1.1.簡介
1.1.1.Elastic
Elastic官網:https://www.elastic.co/cn/
Elastic有一條完整的產品線及解決方案:Elasticsearch、Kibana、Logstash等,前面說的三個就是大家常說的ELK技術棧。
1.1.2.Elasticsearch
Elasticsearch官網:https://www.elastic.co/cn/products/elasticsearch
如上所述,Elasticsearch具備以下特點:
- 分散式,無需人工搭建叢集(solr就需要人為設定,使用Zookeeper作為註冊中心)
- Restful風格,一切API都遵循Rest原則,容易上手
- 近實時搜尋,資料更新在Elasticsearch中幾乎是完全同步的。
1.1.3.版本
目前Elasticsearch最新的版本是6.3.1,我們就使用6.3.0
需要虛擬機器JDK1.8及以上
1.2.安裝和設定
為了模擬真實場景,我們將在linux下安裝Elasticsearch。
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
刪除壓縮包:
rm -rf 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 |
修改檔案許可權:
leyou 要own(擁有) elasticsearch 這個資料夾許可權 -R 是遞迴的賦予許可權
chown leyou:leyou elasticsearch/ -R
1.3.執行
進入elasticsearch/bin目錄,可以看到下面的執行檔案:
然後輸入命令:
./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://192.168.56.101:9200
1.4.安裝kibana
1.4.1.什麼是Kibana?
Kibana是一個基於Node.js的Elasticsearch索引庫資料統計工具,可以利用Elasticsearch的聚合功能,生成各種圖表,如柱形圖,線狀圖,餅圖等。
而且還提供了操作Elasticsearch索引資料的控制台,並且提供了一定的API提示,非常有利於我們學習Elasticsearch的語法。
1.4.2.安裝
因為Kibana依賴於node,我們的虛擬機器沒有安裝node,而window中安裝過。所以我們選擇在window下使用kibana。
最新版本與elasticsearch保持一致,也是6.3.0
解壓到特定目錄即可
1.4.3.設定執行
設定
進入安裝目錄下的config目錄,修改kibana.yml檔案:
修改elasticsearch伺服器的地址:
elasticsearch.url: "http://192.168.56.101:9200"
執行
進入安裝目錄下的bin目錄:
雙擊執行:
發現kibana的監聽埠是5601
1.4.4.控制台
選擇左側的DevTools選單,即可進入控制台頁面:
在頁面右側,我們就可以輸入請求,存取Elasticsearch了。
1.5.安裝ik分詞器
Lucene的IK分詞器早在2012年已經沒有維護了,現在我們要使用的是在其基礎上維護升級的版本,並且開發為ElasticSearch的整合外掛了,與Elasticsearch一起維護升級,版本也保持一致,最新版本:6.3.0
1.5.1.安裝
上傳資料中的zip包,解壓到Elasticsearch目錄的plugins目錄中:
使用unzip命令解壓:
unzip elasticsearch-analysis-ik-6.3.0.zip -d ik-analyzer
然後重新啟動elasticsearch:
1.5.2.測試
大家先不管語法,我們先測試一波。
在kibana控制台輸入下面的請求:
POST _analyze
{
"analyzer": "ik_max_word",
"text": "我是中國人"
}
執行得到結果:
{
"tokens": [
{
"token": "我",
"start_offset": 0,
"end_offset": 1,
"type": "CN_CHAR",
"position": 0
},
{
"token": "是",
"start_offset": 1,
"end_offset": 2,
"type": "CN_CHAR",
"position": 1
},
{
"token": "中國人",
"start_offset": 2,
"end_offset": 5,
"type": "CN_WORD",
"position": 2
},
{
"token": "中國",
"start_offset": 2,
"end_offset": 4,
"type": "CN_WORD",
"position": 3
},
{
"token": "國人",
"start_offset": 3,
"end_offset": 5,
"type": "CN_WORD",
"position": 4
}
]
}
軟體包下載:
連結: https://pan.baidu.com/s/1KeIQtkCRDlnba6L73lkXEg 提取碼: 見本文評論
相關文章