目錄
背景:
如果直接使用Elasticsearch默認分詞器處理中文內容的搜索時,肯定會遇到很尷尬的問題——中文詞語被分成了一個一個的漢字,當用Kibana作圖的時候,按照term來分組,結果每一個漢字都被分成了一組。因此引入es之中文的分詞器插件es-ik就能解決這個問題。
測試默認的分詞對中文的支持
curl -H "Content-Type: application/json" -XGET 'http://master:9200/_analyze?pretty=true' -d '{"text":"我們是中國人"}'
結果是 我、們、是、中、國、人 不符合常規要求。
1、環境配置(安裝maven編譯ik)
[root@elk app]# tar zxvf apache-maven-3.3.9-bin.tar.gz
[root@elk app]# ln -s apache-maven-3.3.9/ maven
[root@elk app]# vi /etc/profile
export MAVEN_HOME=/app/maven
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$MAVEN_HOME/bin:$PATH
[root@elk app]# source /etc/profile
修改maven配置settings.xml
http://my.repository.com/repo/path替換爲阿里雲url
http://maven.aliyun.com/nexus/content/repositories/central
2、下載IK中文分詞插件
https://github.com/medcl/elasticsearch-analysis-ik
#比對配置文件與ik版本是否一致,請提前修改避免日後報錯重新編譯
[root@elk elasticsearch-analysis-ik-6.6.1]# vi pom.xml
<elasticsearch.version>6.6.1</elasticsearch.version>
#使用maven進行源碼編譯
cd ik && mvn clean package -DskipTests
#將ik插件複製到es目錄
[root@elk plugins]# cp /app/elasticsearch-analysis-ik-6.6.1/target/releases/elasticsearch-analysis-ik-6.5.0.zip /app/elasticsearch-6.6.1/plugins/ik/
[root@elk ik]# unzip elasticsearch-analysis-ik-6.5.0.zip
重啓es
[es@elk bin]$ ./elasticsearch
3、測試是否生效
[root@elk ik]# curl -H 'Content-Type:application/json' -XGET http://192.168.198.136:9200/_analyze?pretty -d '{"analyzer": "ik_smart", "text": "我們是中國人"}'
結果是 我們、是、中國人
4、熱更新ik詞庫
如果ik插件默認沒有我們需要的分詞規則,如新出的流行詞彙,需要自行添加,熱更新可以添加後自動更新詞庫避免頻繁重啓es
#部署http服務,安裝tomcat
[root@elk app]# ll | grep tomcat
drwxr-xr-x 9 root root 4096 8月 15 23:59 apache-tomcat-7.0.67
#切換到 /app/apache-tomcat-7.0.67/webapps/ROOT
新建熱詞文件 vi hot.dic 然並卵
#確定可以正常訪問
http://192.168.20.210:8080/hot.dic
#修改ES中ik插件的配置文件
vi /app/es/plugins/ik/config/IKAnalyzer.cfg.xml
添加如下內容
<entry key="remote_ext_dict">http://192.168.198.136:8080/hot.dic</entry>
#重啓es
bin/elasticsearch
#以後需要添加新詞語,直接添加到之前創建的/app/apache-tomcat-7.0.67/webapps/ROOT/hot.dic文件中
#此時,es會自動更新詞典,日誌如下:
[2019-08-16T00:55:23,553][INFO ][o.w.a.d.Monitor ] [KZsaE_I] try load config from /app/elasticsearch-6.6.1/config/analysis-ik/IKAnalyzer.cfg.xml
[2019-08-16T00:55:23,553][INFO ][o.w.a.d.Monitor ] [KZsaE_I] try load config from /app/elasticsearch-6.6.1/plugins/ik/config/IKAnalyzer.cfg.xml
[2019-08-16T00:55:23,695][INFO ][o.w.a.d.Monitor ] [KZsaE_I] [Dict Loading] http://192.168.198.136:8080/hot.dic
[2019-08-16T00:55:23,709][INFO ][o.w.a.d.Monitor ] [KZsaE_I] 然並卵
[2019-08-16T00:55:23,710][INFO ][o.w.a.d.Monitor ] [KZsaE_I] 阿姆斯特朗炮
[2019-08-16T00:55:23,710][INFO ][o.w.a.d.Monitor ] [KZsaE_I] 重新加載詞典完畢...