本文介紹如何在 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就可以了呢?還有,如果我原來就建立了索引庫,更新分詞器后,應該怎么處理原來的索引?知道的朋友可以評論一下。
