搜尋框架搭建1:elasticsearch安裝和視覺化工具kibana、分詞外掛jieba安裝
elasticsearch安裝和視覺化工具kibana、分詞外掛jieba安裝
Elasticsearch前身為Lucene,是一個分散式可擴充套件的實時搜尋和分析引擎。
為了更好地使用Elasticsearch,會安裝相應的工具或外掛,如視覺化工具kibana,分詞外掛jieba。windows環境和Linux環境下安裝elasticsearch和外掛、工具略有差異。
相關資源下載連結
elasticsearch下載: https://www.elastic.co/downloads/past-releases/
kibana視覺化工具下載: https://www.elastic.co/cn/downloads/kibana, 歷史版本:https://www.elastic.co/downloads/past-releases
jieba分詞外掛下載: https://github.com/sing1ee/elasticsearch-jieba-plugin/releases
java下載: https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
gradle工具下載: http://services.gradle.org/distributions/
1 Windosw環境
1.1 java環境安裝
Elasticsearch 需要 Java 8 環境。如果機器沒有java8環境,則首先需要安裝java8。
-
第一步:下載對應的java版本,一路next,記住java8安裝的路徑,一般是
C:\Program Files\Java\jre1.8.0_181
。 -
第二步:新增JAVA路徑。在環境變數中,新增變數
JAVA_HOME
,值設為java的安裝路徑C:\Program Files\Java\jre1.8.0_181
。windows修改環境變數,需要重啟電腦生效。
在命令列視窗輸入java -version
,若顯示如下結果,則表示安裝成功。或顯示java路徑,echo %JAVA_HOME%
,與在環境變數中新增的JAVA_HOME值相同,則也表示安裝成功
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
1.2 elasticsearch安裝
-
第一步:下載某個版本的elasticsearch,解壓到某個路徑。
-
第二步:修改./config/elasticsearch.yml配置檔案
(1) 修改network.host: 0.0.0.0,0.0.0.0表示所有網址都能訪問
(2) 修改http.port: 9200,設定訪問埠,如果9200埠被佔用了,則用另外的埠。
(3) 可設定當前es的cluster.name和node.name的值。
注意:在修改配置檔案時,所有生效項緊跟的冒號後面,需要有一個英文字元的空格;所有生效項所在行的第一個字元為空格,否則es啟動時讀取配置檔案將無法正確解析。 -
第三步:測試es是否生效
(1) 從命令列視窗進入es所在目錄,輸入bin\elasticsearch.bat
,則啟動了es
(2) 在瀏覽器網頁中輸入http://localhost:9200
,當返回一個JSON物件,包含當前節點、叢集版本等資訊,則表示elasticsearch配置成功,如下圖所示
{
"name" : "node-1",
"cluster_name" : "es-GuoTing-application",
"cluster_uuid" : "j6um5uZlSmygvi-pq897dA",
"version" : {
"number" : "6.4.0",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "595516e",
"build_date" : "2018-08-17T23:18:47.308994Z",
"build_snapshot" : false,
"lucene_version" : "7.4.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
1.3 視覺化介面kibana安裝
下載某個版本的kibana,解壓到某個路徑即可。
測試kibana是否生效需以下幾步:
(1) 啟動es
(2) 啟動kibana,在命令列視窗進入kibana路徑,輸入語句bin\kibana.bat
即後臺啟動完成
(3) 在瀏覽器中輸入http://localhost:5601
,可成功訪問即可,頁面類似如下
1.4 中文分詞jieba外掛安裝
elasticsearch自帶分詞外掛,但中文分詞效果很差。一些中文分詞外掛被開發出來提升es的分詞效果,如ik,jieba,ik作為外國友人開發的外掛,效果不如jieba。
1.4.1 gradle安裝
在編譯jieba得到可用的jieba分詞外掛時,需用到gradle這個工具。如果機器上沒有gradle這個工具,則需先安裝此工具。
-
第一步:下載某版本的gradle工具後,解壓到某路徑。
-
第二步:新增gradle路徑。在環境變數中,新增變數
GRADLE_HOME
,值設為gradle的路徑。例如D:\gradle-4.10.2
,並在Path中新增gradle的bin的路徑,例如D:\gradle-4.10.2\bin
。windows修改環境變數,需要重啟電腦生效。
在命令列視窗輸入gradle -version
,若顯示如下結果,則表示安裝成功。
D:\>gradle -version
------------------------------------------------------------
Gradle 4.10.2
------------------------------------------------------------
Build time: 2018-09-19 18:10:15 UTC
Revision: b4d8d5d170bb4ba516e88d7fe5647e2323d791dd
Kotlin DSL: 1.0-rc-6
Kotlin: 1.2.61
Groovy: 2.4.15
Ant: Apache Ant(TM) version 1.9.11 compiled on March 23 2018
JVM: 1.8.0_181 (Oracle Corporation 25.181-b13)
OS: Windows 10 10.0 amd64
1.4.2 jieba外掛安裝
下載和es版本相對應版本的jieba分詞外掛,解壓到某路徑後,用gradle編譯後才可得到可用的外掛。步驟如下
-
第一步:從命令列視窗進入jieba分詞外掛解壓路徑,執行
gradle pz
。編譯成功,將會在./build/distributions/
目錄下生成一個壓縮包。 -
第二步:將壓縮包解壓,拷貝到
${elasticsearch_home}/plugins
路徑下,可刪除壓縮包檔案。
驗證jieba分詞是否安裝成功,可從瀏覽器或視覺化介面兩種方法。不管哪種方法,首先需重啟es。
(1) 瀏覽器驗證
在瀏覽器中輸入http://localhost:9200/_analyze?analyzer=jieba_index&pretty=true&text=輸入要分詞的句子,瀏覽器返回分詞後的結果,則說明jieba分詞安裝成功。
也可能返回如下的json檔案,這時候不一定說明jieba分詞外掛沒有成功安裝,有可能是es的http的介面問題,可用視覺化介面的方法確認是否未成功。
出現這種問題的解決方法目前還沒找到。
{
"error" : {
"root_cause" : [
{
"type" : "parse_exception",
"reason" : "request body or source parameter is required"
}
],
"type" : "parse_exception",
"reason" : "request body or source parameter is required"
},
"status" : 400
}
(2) 視覺化介面驗證
啟動kibana,在DevTools介面下輸入
POST /_analyze/?pretty
{
"analyzer": "jieba_search",
"text": "我愛北京天安門"
}
出現如下介面表示是通過jieba外掛進行分詞的。
{
"tokens": [
{
"token": "我愛",
"start_offset": 0,
"end_offset": 2,
"type": "word",
"position": 0
},
{
"token": "北京",
"start_offset": 2,
"end_offset": 4,
"type": "word",
"position": 1
},
{
"token": "天安門",
"start_offset": 4,
"end_offset": 7,
"type": "word",
"position": 2
}
]
}
es中,analyzer表示分詞使用的方法,當使用結巴分詞時,可以是jieba_index: 用於索引分詞,分詞力度較細;jieba_search:用於查詢分詞,分詞力度較粗;jieba_others: 全形轉半形、大寫轉小寫、字元分詞。
jieba有三種分詞模式,
(1) 精確模式,試圖將句子最精確地切開,適合文字分析;
(2) 搜尋引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜尋引擎分詞;
(3) 全模式,把句子中所有的可以成詞的詞語都掃描出來,速度非常快,但不能解決歧義問題。
2 Linux環境
Linux環境下安裝elasticsearch和相關的工具、外掛,和windows下大同小異。
2.1 java安裝
-
第一步:下載對應的java版本,解壓到某路徑。
-
第二步:新增JAVA路徑。通過修改/etc/profile檔案,在檔案末尾添以下語句,並通過語句
source /etc/profile
使修改生效。
JAVA_HOME=/home/appuser/envs/jdk1.8.0_171 #java的路徑
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH export CLASSPATH
在命令列中輸入java -version
,若返回正確的java版本資訊,則java安裝成功。
2.2 elasticsearch安裝
Linux下elasticsearch的安裝和windows下基本一致。
先下載解壓
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.0.zip
unzip elasticsearch-6.2.0.zip
再修改./config/elasticsearch.yml配置檔案,最後測試是否安裝成功時與windows略有差異。啟動es時,先進入到es路徑,再通過./bin/elasticsearch
啟動。在瀏覽器網頁中輸入http://localhost:9200
,當返回一個正確的JSON物件,包含當前節點、叢集版本等資訊,則安裝成功。若是伺服器,則瀏覽器輸入內容中localhost換成伺服器ip地址,例如http://10.90.234.118:9200
。
2.3 視覺化介面kibana安裝
下載某個版本的kibana,解壓到某個路徑即可。
測試kibana是否生效需以下幾步:
(1) 啟動es
(2) 啟動kibana,在命令列視窗進入kibana路徑,輸入語句./bin/kibana
即後臺啟動完成
(3) 在瀏覽器中輸入http://localhost:5601
,可成功訪問即可,若是伺服器,則把localhost換成伺服器ip地址。
2.4 中文分詞jieba外掛安裝
類似windows環境下Jieba外掛的安裝。
2.4.1 gradle安裝
-
第一步:下載某版本的gradle工具後,解壓到某路徑。
-
第二步:新增gradle路徑。通過修改/etc/profile檔案,在檔案末尾添以下語句,並通過語句
source /etc/profile
使修改生效。
export GRADLE_HOME=/usr/local/gradle-5.0 #gradle 路徑
export PATH=$GRADLE_HOME/bin:$PATH
export GRADLE_USER_HOME=$GRADLE_HOME/.gradle #gradle的配置檔案位置,該目錄下的init.gradle指定了遠端庫路徑
在命令列視窗輸入gradle -version
,若顯示正確的gradle版本資訊,則表示安裝成功。
在使用gradle pz
編譯jieba外掛時,從國外映象下載相關資源一般會失敗,需要新增國內的阿里雲映象。
對單個專案生效,則修改該專案路徑下的build.gradle的內容,修改對應buildscript和allprojects項的內容如下
buildscript {
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven{ url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
}
dependencies {#建議註釋該項內容,在使用gradle pz時易報錯
classpath 'com.android.tools.build:gradle:2.2.3'
}
}
allprojects {
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
}
}
修改完後,在使用語句gradle pz
在Linux環境下編譯jieba外掛時一般不會報錯。接下來就可以進入到編譯jieba外掛階段。
而本人在伺服器上編譯時遇到如下問題,懷疑是和網路連線限制的相關問題。網上很少資料涉及到這個問題,做了基本能做的嘗試,都沒法解決此問題,如果有人遇到類似問題也解決了,請不要吝嗇來告訴我方法吧。
FAILUER: Build failed with an exception.
* What went wrong:
Execution failed for task ':compileJava'.
> Could not resolve all files for configuration ':compileClasspath'.
> Could not resolve com.huaban:jieba-analysis:1.0.2.
Required by:
project :
> Could not resolve com.huaban:jieba-analysis:1.0.2.
> Could not get resource 'http://maven.aliyun.com/nexus/content/groups/public/com/huaban/jieba-analysis/1.0.2/jieba-analysis-1.0.2.pom'.
> Could not GET 'http://maven.aliyun.com/nexus/content/groups/public/com/huaban/jieba-analysis/1.0.2/jieba-analysis-1.0.2.pom'.
> maven.aliyun.com
> Could not resolve com.huaban:jieba-analysis:1.0.2.
> Could not get resource 'https://jcenter.bintray.com/com/huaban/jieba-analysis/1.0.2/jieba-analysis-1.0.2.pom'.
> Could not GET 'https://jcenter.bintray.com/com/huaban/jieba-analysis/1.0.2/jieba-analysis-1.0.2.pom'.
> jcenter.bintray.com
> Could not resolve org.elasticsearch:elasticsearch:6.4.0.
Required by:
project :
> Could not resolve org.elasticsearch:elasticsearch:6.4.0.
> Could not get resource 'http://maven.aliyun.com/nexus/content/groups/public/org/elasticsearch/elasticsearch/6.4.0/elasticsearch-6.4.0.pom'.
> Could not GET 'http://maven.aliyun.com/nexus/content/groups/public/org/elasticsearch/elasticsearch/6.4.0/elasticsearch-6.4.0.pom'.
> maven.aliyun.com
> Could not resolve org.elasticsearch:elasticsearch:6.4.0.
> Could not get resource 'https://jcenter.bintray.com/org/elasticsearch/elasticsearch/6.4.0/elasticsearch-6.4.0.pom'.
> Could not GET 'https://jcenter.bintray.com/org/elasticsearch/elasticsearch/6.4.0/elasticsearch-6.4.0.pom'.
> jcenter.bintray.com
> Could not resolve org.apache.logging.log4j:log4j-api:2.7.
Required by:
project :
> Could not resolve org.apache.logging.log4j:log4j-api:2.7.
> Could not get resource 'http://maven.aliyun.com/nexus/content/groups/public/org/apache/logging/log4j/log4j-api/2.7/log4j-api-2.7.pom'.
> Could not GET 'http://maven.aliyun.com/nexus/content/groups/public/org/apache/logging/log4j/log4j-api/2.7/log4j-api-2.7.pom'.
> maven.aliyun.com
> Could not resolve org.apache.logging.log4j:log4j-api:2.7.
> Could not get resource 'https://jcenter.bintray.com/org/apache/logging/log4j/log4j-api/2.7/log4j-api-2.7.pom'.
> Could not GET 'https://jcenter.bintray.com/org/apache/logging/log4j/log4j-api/2.7/log4j-api-2.7.pom'.
> jcenter.bintray.com
> Could not resolve org.apache.logging.log4j:log4j-core:2.7.
Required by:
project :
> Could not resolve org.apache.logging.log4j:log4j-core:2.7.
> Could not get resource 'http://maven.aliyun.com/nexus/content/groups/public/org/apache/logging/log4j/log4j-core/2.7/log4j-core-2.7.pom'.
> Could not GET 'http://maven.aliyun.com/nexus/content/groups/public/org/apache/logging/log4j/log4j-core/2.7/log4j-core-2.7.pom'.
> maven.aliyun.com
> Could not resolve org.apache.logging.log4j:log4j-core:2.7.
> Could not get resource 'https://jcenter.bintray.com/org/apache/logging/log4j/log4j-core/2.7/log4j-core-2.7.pom'.
> Could not GET 'https://jcenter.bintray.com/org/apache/logging/log4j/log4j-core/2.7/log4j-core-2.7.pom'.
> jcenter.bintray.com
2.4.2 jieba外掛安裝
和windows環境下幾乎相同。
下載和es版本相同版本的jieba分詞外掛,解壓,執行gradle pz
。
在執行gradle pz
時可能會提示沒有操作許可權,則需檢視當前資料夾是否可執行,可用chmod -R 777 .
修改當前使用者對整個資料夾的操作許可權。
編譯成功,在./build/distributions/
目錄下生成一個壓縮包,拷貝到${elasticsearch_home}/plugins
路徑下並解壓,可刪除壓縮包檔案。
驗證jieba分詞是否安裝成功同windows環境。略微差異在於,如果是伺服器,在區域網的其它機器的瀏覽器輸入內容時,localhost替換成瀏覽器的ip地址,如http://10.90.234.118:9200/_analyze?analyzer=jieba_index&pretty=true&text=輸入要分詞的句子。
經過以上步驟,基本上ES和相關的外掛、工具都安裝完成,可以使用ES進行開發了。