Elasticsearch 第一篇:在 Windows 上的環境搭建


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

 


免責聲明!

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



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