本文介紹如何在 windows 10 ,64位操作系統上安裝最新版本 Elasticsearch、以及相關插件。之前看了不少園友的文章,用到的版本都比較低,尤其是插件的版本要和ES的版本相對應等這些問題,介紹的不是很詳細,干脆自己記錄一下安裝配置過程,也供他人參考。
Elasticsearch簡介
Elasticsearch是一個基於Lucene的搜索服務器。它提供了一個分布式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java語言開發的,並作為Apache許可條款下的開放源碼發布,是一種流行的企業級搜索引擎。
配置 java 環境
由於ES是Java語言開發的,所以這里需要先安裝Java環境,jdk 下載地址是:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
下載時,需要先注冊Oracle賬號,注冊后選擇下載 Windows x 64 .exe 這個最新版本(目前是 2020年7月,版本是 jdk14 )
雙擊 jdk-14_windows-x64-bin ,然后一直點擊 “下一步” 按鈕,直到安裝完畢,默認的安裝路徑是 C:\Program Files\Java\jdk-14\ 按照默認路徑安裝即可
接下來,需要配置Java環境變量,右擊 “我的電腦” ——點擊 “屬性” ——點擊 “高級系統設置”,如下圖
在新窗口的 “高級” 選項卡中,點擊 “環境變量” ,再點擊系統變量(S)里的 “新建” 按鈕,彈出新窗口如下圖所示
變量名填入: JAVA_HOME 變量值填入安裝的路徑: C:\Program Files\Java\jdk-14
然后在系統變量(S)中,選中Path 這個變量,點擊 “編輯” 按鈕,打開編輯窗口,再點擊 “新建” 按鈕,輸入 %JAVA_HOME%\bin 如下圖所示
最后驗證一下配置是否成功,打開 cmd 窗口(以管理員形式打開),輸入命令 java -version 或者命令 javac 可以看安裝是否成功,如下圖
以上說明安裝成功,java 版本是14
下載並安裝 Elasticsearch
ES工具包下載地址是:http://www.elasticsearch.org/download/
我們選擇版本 7.8.0 window 這個版本,先在D盤建一個 ES 目錄(方便管理),將下載的包解壓到 ES 目錄中,如下圖所示
以管理員身份運行,打開cmd窗口,進入ES的bin目錄: cd /d D:\ES\elasticsearch-7.8.0\bin
然后運行命令 elasticsearch.bat
稍等片刻,然后在瀏覽器中訪問 http://localhost:9200/
以上說明 ES 相關包已經成功安裝
安裝Head插件
安裝 Head 插件的前提,是需要將 node、grunt 安裝和配置完善。
1、首先下載 node.js
下載地址是 https://nodejs.org/en/download/
選擇window 64位的版本 v12.18.1,一直點擊 “下一步” 按鈕,直到安裝完畢,下載完成可以通過命令 node -v 查看安裝版本以及是否成功,如下圖
2、安裝grunt
以管理員身份打開cmd命令窗口,執行 npm install -g grunt-cli 然后通過 grunt -version 看安裝的版本
3、下載 Head
Head 相關文檔 http://mobz.github.io/elasticsearch-head/
或者直接到 https://github.com/mobz/elasticsearch-head 下載 zip 包到本地。請注意,上面ES安裝的版本是 v.7.8.0 ,這里 Head 插件也要選擇 master 這個版本下載。
下載完,我們將其解壓到上面提到的D盤ES目錄,跟ES放在同一級目錄,方便管理,如下圖所示
cmd 進入head 目錄: cd /d D:\ES\elasticsearch-head-master
然后執行命令:npm install 如下圖所示
上圖執行過程卡住了,主要是缺少 phantomjs-2.1.1-windows ,按照上邊的提示,先下載這個文件,
然后放在目錄 C:\Users\ADMINI~1\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.zip
順便解壓一下,再重新試一下執行 npm install ,這次執行成功了,見下圖
然后執行 npm start ,啟動 Head 插件,如下圖所示
再訪問 http://localhost:9100 可以看到下圖效果
雖然Head已經是安裝成功,但是目前是未連接狀態,上網查一下資料,需要做以下配置:
找到文件 D:\ES\elasticsearch-7.8.0\config\elasticsearch.yml 在該文件最后添加以下語句:
http.cors.enabled: true
http.cors.allow-origin: "*"
然后再重啟ES,重啟Head:
重啟ES cd /d D:\ES\elasticsearch-7.8.0\bin\elasticsearch.bat
重啟Head cd /d D:\ES\elasticsearch-head-master\npm start
再訪問 http://localhost:9200/ 以及 http://localhost:9100/
這時可以看到,現在連接上了,灰色變成綠色,Head 安裝成功。
總結一下,Head 插件安裝比較麻煩,但是通過看報錯信息以及網上資料文檔,多多嘗試,是可以解決的。
安裝 Kibana
Kibana 插件是一個可視化的插件,非必須,如果需要安裝也可以參考以下的流程
下載地址是 https://www.elastic.co/cn/downloads/kibana
注意,我們 用的ES版本是 v7.8.0 , Kibana 安裝的版本也是要和ES的同步,這里選擇 Kibana版本為 7.8.0
同樣,下載完畢后,我們將其解壓到 D:\ES\kibana-7.8.0
同樣以管理員身份打開cmd 窗口執行命令
cd /d D:\ES\kibana-7.8.0\bin
kibana.bat
執行完,能正常打開 http://localhost:5601 即成功,Kibana 要怎么用,以后再來詳細說明。
安裝分詞器 IK
ES默認的分詞器,對中文的分解不是很好,所以需要用到其它分詞器,這里以IK分詞器為例,介紹怎么安裝。
首先往ES添加索引,用 postman 提交數據:
put http://localhost:9200/db_news/new/1
{ "title":"今日頭條新聞", "author":"新華時報記者", "content":"今日券商股繼續漲停" }
提交后可以看到返回結果
{ "_index": "db_news", "_type": "new", "_id": "1", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 0, "_primary_term": 1 }
如果我們用ES原生的分詞器,例如
get http://localhost:9200/db_news/_analyze
{ "analyzer":"standard", "text":"我是中國人,我愛自己的祖國" }
分詞結果是
{ "tokens": [ { "token": "我", "start_offset": 0, "end_offset": 1, "type": "<IDEOGRAPHIC>", "position": 0 }, { "token": "是", "start_offset": 1, "end_offset": 2, "type": "<IDEOGRAPHIC>", "position": 1 }, { "token": "中", "start_offset": 2, "end_offset": 3, "type": "<IDEOGRAPHIC>", "position": 2 }, { "token": "國", "start_offset": 3, "end_offset": 4, "type": "<IDEOGRAPHIC>", "position": 3 }, { "token": "人", "start_offset": 4, "end_offset": 5, "type": "<IDEOGRAPHIC>", "position": 4 }, { "token": "我", "start_offset": 6, "end_offset": 7, "type": "<IDEOGRAPHIC>", "position": 5 }, { "token": "愛", "start_offset": 7, "end_offset": 8, "type": "<IDEOGRAPHIC>", "position": 6 }, { "token": "自", "start_offset": 8, "end_offset": 9, "type": "<IDEOGRAPHIC>", "position": 7 }, { "token": "己", "start_offset": 9, "end_offset": 10, "type": "<IDEOGRAPHIC>", "position": 8 }, { "token": "的", "start_offset": 10, "end_offset": 11, "type": "<IDEOGRAPHIC>", "position": 9 }, { "token": "祖", "start_offset": 11, "end_offset": 12, "type": "<IDEOGRAPHIC>", "position": 10 }, { "token": "國", "start_offset": 12, "end_offset": 13, "type": "<IDEOGRAPHIC>", "position": 11 } ] }
顯然,這樣的分詞毫無意義,這也是我們要安裝IK分詞器的原因。
IK分詞器下載地址 https://github.com/medcl/elasticsearch-analysis-ik 同樣用 7.8.0 版本
在 D:\ES\elasticsearch-7.8.0\plugins 新建 ik 文件夾,將以上下載的包解壓到這里,如下圖所示
然后重啟 ES,再進行IK分詞測試
Get http://localhost:9200/db_news/_analyze
{ "analyzer":"ik_smart", "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": 6, "end_offset": 7, "type": "CN_CHAR", "position": 3 }, { "token": "愛", "start_offset": 7, "end_offset": 8, "type": "CN_CHAR", "position": 4 }, { "token": "自己", "start_offset": 8, "end_offset": 10, "type": "CN_WORD", "position": 5 }, { "token": "的", "start_offset": 10, "end_offset": 11, "type": "CN_CHAR", "position": 6 }, { "token": "祖國", "start_offset": 11, "end_offset": 13, "type": "CN_WORD", "position": 7 } ] }
可以看到,分詞后是有意義的,至此,IK分詞也安裝成功,本文結束。
總結
啟動 ES cd /d D:\ES\elasticsearch-7.8.0\bin 再執行 elasticsearch.bat 訪問 http://localhost:9200/
啟動Head cd /d D:\ES\elasticsearch-head-master 再執行 npm start 訪問 http://localhost:9100/
啟動Kibana cd /d D:\ES\kibana-7.8.0\bin 再執行 kibana.bat 訪問 http://localhost:5601
存在問題:以上我安裝IK分詞器后,直接重啟ES,分詞器馬上生效,如果我換其它分詞器,是不是也是直接重啟ES就可以了呢?還有,如果我原來就建立了索引庫,更新分詞器后,應該怎么處理原來的索引?知道的朋友可以評論一下。