ElasticSearch5.3安裝IK分詞器
之前使用Elasticsearch安裝head插件成功了,但是安裝IK分詞器卻失敗了。貌似是ElasticSearch5.0以后就不支持直接在elasticsearch.yml中配置IK了。原因下面會說明。
首先下載:
https://www.elastic.co/downloads/elasticsearch
https://github.com/medcl/elasticsearch-analysis-ik
,最新版本貌似是5.3 了。
第一步 預處理:
- 解壓elasticsearch-5.3.0.zip>D:\programfiles\softtools\elasticsearch\elasticsearch-5.3.0
- 解壓elasticsearch-analysis-ik-5.3.0>D:\programfiles\softtools\elasticsearch\plugins\elasticsearch-analysis-ik-5.3.0
- 編譯elasticsearch-analysis-ik插件 cmd>D:\programfiles\softtools\elasticsearch\plugins\elasticsearch-analysis-ik-5.3.0>mvn clean package
第二步 配置:
IK配置,如下圖是IK分詞器config目錄下的配置D:\programfiles\softtools\elasticsearch\plugins\elasticsearch-analysis-ik-5.3.0\config
在D:\programfiles\softtools\elasticsearch\elasticsearch-5.3.0\config目錄中新建ik文件夾,把上圖中的IK配置文件放入ElasticSearch目錄中的D:\programfiles\softtools\elasticsearch\elasticsearch-5.3.0\config\ik目錄下
ik里面的內容就是 第二步:1.IK配置 里面的配置。
3. 配置IK分詞器
下圖是通過mvn命令編譯后生成的zip包
將上圖中的zip包放入D:\programfiles\softtools\elasticsearch\elasticsearch-5.3.0\plugins\ik (ps:ik目錄沒有的話自己新建一個就好),進行解壓
結果如下圖所示:
整個安裝就完成了。
第三步 測試:
1. 修改elasticsearch.yml中的配置
設置cluster.name,node.name,同時解開這兩個配置的注釋
設置http.port:9200,其他不需要增加配置了
2. windows下雙擊D:\programfiles\softtools\elasticsearch\elasticsearch-5.3.0\bin\elasticsearch.bat
不報錯說明安裝成功。
3. 安裝Http連接訪問工具,比如火狐插件httpRequester,安裝完成后會在火狐瀏覽器右上角出現插件的標示。
4. 創建索引
content to send:
{
"settings" : {
"analysis" : {
"analyzer" : {
"ik" : {
"tokenizer" : "ik_smart"
}
}
}
},
"mappings" : {
"logs" : {
"dynamic" : true,
"properties" : {
"message" : {
"type" : "string",
"analyzer" : "ik_smart"
}
}
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
點擊Put按鈕,出現圖右邊的返回值,說明創建索引成功。
5. 進行分詞測試:
安裝過程遇到的坑:
1.將網上對使用IK的配置放到elasticsearch.yml中就會報如下的錯誤:
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentException: node settings must not contain any index level settings
這個無論怎么想都不明白,而且網上還沒有幾個人遇到過這種情況。
2.Caused by: java.lang.IllegalStateException: jar hell!
將IK編譯出來的jar,和source.jar兩個文件放入elasticsearch的lib里后就出現了,有人說是版本問題,但是我選擇的兩者都是最新版本,並且對應。這里是因為lib里面有IK了,然后elasticsearch去讀取plugin文件夾下的插件的時候又裝載了一次,於是就出現了這個問題。將lib里的IK jar包刪除,改從plugins里加載就沒有問題了。網上也有不少是這樣做的,但是確實這么做不正確。
在D:\programfiles\softtools\elasticsearch\elasticsearch-5.3.0\logs會看到相應的錯誤日志。
3. Exception in thread “main” java.lang.IllegalStateException: Could not load plugin descriptor for existing plugin [analysis-ik]. Was the plugin built before 2.0?
Likely root cause: java.nio.file.NoSuchFileException: /home/es/es2/plugins/analysis-ik/plugin-descriptor.properties
出現上面的異常是我一開始把編譯出來的jar包放入D:\programfiles\softtools\elasticsearch\elasticsearch-5.3.0\plugins\ik里面了,其實是要把D:\programfiles\softtools\elasticsearch\plugins\elasticsearch-analysis-ik-5.3.0\target\releases\elasticsearch-analysis-ik-5.3.0.zip解壓到那個ik目錄下面。
4. 為什么沒有在elasticsearch.yml配置IK相關的分詞屬性呢
5. 在github上 https://github.com/medcl/elasticsearch-analysis-ik的使用文檔說了:
5.0.0及其以后就不會上面兩個分詞器了,而使用兩個參數去替代,同時根據上面的使用文檔來說,作者也沒有說明要針對IK配置elasticsearch.yml。
總體來說還是遇到一定坎坷的,網上很多ES的文章對於新版本都不適用了。我從新將5.0.0的安裝環境全部刪除然后引入最新版本,才搞定了IK分詞器。最新版本的ES安裝head插件應該沒有什么問題了,畢竟head也沒有要求要對5.0.0以后的版本進行安裝配置的改動。