1. 程式人生 > >Linux 安裝Elasticsearch和配置ik分詞器步驟

Linux 安裝Elasticsearch和配置ik分詞器步驟

今天給同學們帶來的是關於Elasticsearch的簡單介紹以及如何在linux中搭建elasticsearch和增添ik分詞器,本篇文章我們以搭建elasticsearch為主,後續的文章中將會將es與springboot結合,將其新增到實際開發中。

1.Elasticsearch簡介

1.1什麼是Elasticsearch

Elasticsearch是一個分散式可擴充套件的實時搜尋和分析引擎。是一個建立在Apache Lucene基礎上的搜尋引擎,但是Lucene只是一個框架,使用十分複雜。而es使用Lucene作為內部引擎,我們只需要使用統一開發好的api即可,而不需要了解Lucene背後複雜的執行原理。當然全文搜尋只是es的其中一個功能,es還可以進行許多其他的工作。
好了,我們只是對es進行一個簡單的介紹,如果需要了解更多,網上有大量的文章可以來進行閱讀,那我們來切入正題,開始進行es的安裝。

2.Elasticsearch安裝

2.1 環境準備

首先安裝es需要java環境,因此我們來先安裝java,很容易,一句命令

yum install java-1.8.0-open*

2.2 下載Es

首先,我們需要進行es的下載,我們來到官網上選擇我們需要的版本。本次案例我們以2.4.0版本為例,之所以沒有選擇最新的版本作為案例,因為後期我們需要與springboot融合,目前來看springboot無法對最新版本的es有很好的整合,所以我們選擇2.4.0版本進行演示,下載地址如下https://www.elastic.co/downloads/past-releases


這裡寫圖片描述

2.3 安裝

2.3.1 將壓縮包上傳至伺服器
這裡寫圖片描述

2.3.2 解壓縮

tar -zxvf elasticsearch-2.4.0.tar.gz

2.3.3 建立賬號
注意!es啟動是不允許使用root賬號來啟動的,所以我們需要來建立一個其他的賬號並賦予其賬號對應許可權

#建立賬號
useradd maxrocky
#賦許可權
chown -R maxrocky:maxrocky /phoenix/elastic/elasticsearch-2.4.0

此時我們可以看到資料夾的資訊已經變為了我們建立的maxrocky
這裡寫圖片描述

2.3.4 啟動es
我們進入到es的bin目錄將es啟動

#切換賬號
su maxrocky
#啟動es
./elasticsearch

這裡寫圖片描述

此時我們啟動了es,我們來再開一個遠端連線來測試一下es是否啟動成功,注!此時不要把es關掉,因為我們並沒有使用後臺方式來開啟,如果關掉es也就被關掉了,也可以使用./elasticsearch -d 命令來後臺開啟es,此時使用前臺開啟主要是為了讓同學們看到輸出日誌,來確保es是否成功開啟。

2.3.5 檢測開啟是否成功

curl localhost:9200

這裡寫圖片描述

到這裡我們的es就算是安裝好了,但是還沒有結束,要達到使用還是有一些必備的配置以及外掛要進行安裝的,接下來我們來進行說明。

2.4 開啟遠端訪問

此時你會發現,明明開啟了服務,卻通過外界網頁瀏覽的話無法訪問到,此時需要我們來開啟遠端訪問。我們以vi進入到config檔案下的elasticsearch.yml檔案中。
這裡寫圖片描述

進入配置檔案 修改network.host為0.0.0.0 注意!因為是yml檔案,所以一定要注意格式。要完全按照圖中的格式來,尤其是空格的都少。否則啟動會報錯。
這裡寫圖片描述

儲存,重啟es,成功
這裡寫圖片描述

3.安裝head外掛

3.1 head簡介

head是一個介面化的叢集操作和管理工具,可以讓我們更好的更直觀的對es裡的資料進行檢視和管理。

3.2 head安裝

首先我們切換到es的bin目錄下,之後輸入安裝命令

#切路徑(根據自己的es存放位置定)
cd /phoenix/elastic/elasticsearch-2.4.0/bin/
#安裝外掛
./plugin install mobz/elasticsearch-head

重啟es,訪問路徑http://你的ip:9200/_plugin/head/,如下圖所示,安裝成功。
這裡寫圖片描述

4.新增IK分詞器

4.1 新增原因

一般像solr和es這類搜尋引擎自帶的分詞器對中文的分詞效果都是非常差的,我們來看個例子。

首先,我們先使用剛剛安裝好的head外掛來新增一個名為shop的索引,如圖所示

這裡寫圖片描述

之後我們來看一下預設的分詞器是如何來拆分’五常大米’這幾個字的,在瀏覽器中輸入
http://你的ip:9200/shop/_analyze?pretty&analyzer=standard&text=五常大米

如下圖所示
這裡寫圖片描述
預設的分詞器將每一個字都進行了拆分,很明顯這不是我們想要的,我們想要的是當我們搜尋’大米’或者’五常米’之類的字的時候能搜尋到我們要的這條資料,而不是一個字一個字的進行拆分。這時我們就需要引入分詞器,而ik分詞器就是一個很不錯的選擇。

4.2 下載ik分詞器

一般到github上下載原始碼,之後使用maven進行編譯,需要注意的是es與ik是有版本匹配的,所以需要找到配對的版本,目前我們安裝的es是2.4.0版本,所以使用了對應的1.10.0版本的ik分詞器,下載地址為:http://download.csdn.net/download/liboyang71/10121696 (沒辦法csdn必須設定積分,考慮到需要的同學提供了別的下載地址連結:http://pan.baidu.com/s/1boQmgCR 密碼:niaz)對應版本的資訊可以到github中去進行檢視,拿到自己所需的ik版本。

4.3 ik分詞器安裝

下載完後,我們將ik分詞器上傳到我們的es的plugins/ik目錄下,ik資料夾需要我們自己建立,命令如下

#切換目錄
cd /phoenix/elastic/elasticsearch-2.4.0/plugins/
#建立ik資料夾
mkdir ik
#切換到ik資料夾下進行檔案上傳
cd ik
#沒有unzip命令的同學輸入如下命令安裝unzip命令
yum install -y unzip
#對zip進行解壓
unzip elasticsearch-analysis-ik-1.10.0.zip

重啟es,我們會發現啟動時的資訊多了一個關於ik的資訊,如圖所示
這裡寫圖片描述
之後在瀏覽器中檢視我們之前試過的’五常大米’http://你的ip:9200/shop/_analyze?pretty&analyzer=ik_max_word&text=五常大米
結果如圖所示(我們這次的urlanalyzer換為了ik_max_word,這是在指定我們剛裝好的新的分詞器)
這裡寫圖片描述
好了,分詞器達到了我們預期的效果。ik分詞器我們也算是安裝成功了。

4.4 更改es預設使用的分詞器(附加)

雖然我們已經安裝好了ik分詞器,但是如果後期我們在與java結合開發的時候,我們會發現如果我們不刻意去指定使用哪個分詞器,還是會使用預設的分詞器,這樣雖然可以用程式碼設定來解決,但是如果我們直接將預設分詞器改為ik分詞器豈不是更方便,這個設定看個人需求,不是必備設定的。
4.4.1 修改預設分詞器為ik分詞器
其實很容易,只要在elasticsearch.yml中加入兩行配置即可
index.analysis.analyzer.default.tokenizer : “ik_max_word”
index.analysis.analyzer.default.type : “ik”
這裡寫圖片描述
還是提醒同學們要記得注意格式,尤其空格。

5.設定自定義分詞器

雖然現在安裝了ik分詞器已經能滿足我們的大部分需求了,但是還有一些片語使我們不想進行拆分的特殊詞,接下來來說一下我們如何配置自定義分詞器,步驟很簡單,如下所示

5.1 配置自定義分詞器

其實只要將我們plugins/ik/config/custom此目錄下的mydict.dic檔案中新增我們要自定義的詞即可。(如下圖所示)
這裡寫圖片描述
使用vi命令進行編輯
這裡寫圖片描述

最後,除了啟動es時候切換成新建的賬號其餘的操作還是使用root賬戶比較好,省的出現一些許可權不足而報錯的問題。

好了,之後重啟es就大功告成了。在開發的時候只要直接儲存資料就會按照ik分詞器的切詞方式來進行儲存了。