在線安裝ik插件(較慢)
docker exec -it es /bin/bash
./bin/es-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip
看到報錯了,我訪問一下。就是沒有了
# 要是上面是安裝成功的,后面還要在執行下面的命令。
#退出
exit#重啟容器
docker restart elasticsearch
離線安裝ik插件
查看數據卷目錄
安裝插件需要知道elasticsearch的plugins目錄位置,而我們用了數據卷掛載,因此需要查看elasticsearch的數據卷目錄,通過下面命令查看。
docker volume inspect es-plugins
說明plugins目錄被掛載到了:/var/lib/docker/volumes/es-plugins/_data
這個目錄中。
解壓分詞器安裝包
把這個ik分詞器壓縮包解壓一下,并且重命名成 ik
這是解壓后重命名的
上傳插件到es容器中
也就是/var/lib/docker/volumes/es-plugins/_data
目錄里面
重啟容器
#重啟容器
docker restart es
# 查看es日志
docker logs -f es
測試
IK分詞器包含兩種模式:
ik_smart
:最少切分ik_max_word
:最細切分
GET /_analyze
{"analyzer": "ik_max_word","text": "現在學習Java真是太好啦"
}
結果
{"tokens" : [{"token" : "現在","start_offset" : 0,"end_offset" : 2,"type" : "CN_WORD","position" : 0},{"token" : "在學","start_offset" : 1,"end_offset" : 3,"type" : "CN_WORD","position" : 1},{"token" : "學習","start_offset" : 2,"end_offset" : 4,"type" : "CN_WORD","position" : 2},{"token" : "java","start_offset" : 4,"end_offset" : 8,"type" : "ENGLISH","position" : 3},{"token" : "真是太","start_offset" : 8,"end_offset" : 11,"type" : "CN_WORD","position" : 4},{"token" : "真是","start_offset" : 8,"end_offset" : 10,"type" : "CN_WORD","position" : 5},{"token" : "太好","start_offset" : 10,"end_offset" : 12,"type" : "CN_WORD","position" : 6},{"token" : "好啦","start_offset" : 11,"end_offset" : 13,"type" : "CN_WORD","position" : 7}]
}
擴展詞典
隨著互聯網的發展,“造詞運動”也越發的頻繁。出現了很多新的詞語,在原有的詞匯列表中并不存在。比如:“奧力給”,“泰酷辣” 等。
所以我們的詞匯也需要不斷的更新,IK分詞器提供了擴展詞匯的功能。
1、打開ik分詞器config目錄
2、在IKAnalyzer.cfg.xml配置文件內容添加
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties><comment>IK Analyzer 擴展配置</comment><!--用戶可以在這里配置自己的擴展字典 --><entry key="ext_dict">ext.dic</entry><!--用戶可以在這里配置自己的擴展停止詞字典--><entry key="ext_stopwords"></entry><!--用戶可以在這里配置遠程擴展字典 --><!-- <entry key="remote_ext_dict">words_location</entry> --><!--用戶可以在這里配置遠程擴展停止詞字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
3、新建一個 ext.dic,可以參考config目錄下復制一個配置文件進行修改
vim ext.dic
奧力給
泰酷辣
4、重啟elasticsearch
docker restart es# 查看日志
docker logs -f es
日志中已經成功加載 ext.dic 配置文件
5、測試效果
GET /_analyze
{"analyzer": "ik_max_word","text": "現在學習Java真是太好啦 奧力給"
}
注意當前文件的編碼必須是 UTF-8 格式,嚴禁使用Windows記事本編輯
停用詞 詞典
在互聯網項目中,在網絡間傳輸的速度很快,所以很多語言是不允許在網絡上傳遞的,如:關于宗教、政治等敏感詞語,那么我們在搜索時也應該忽略當前詞匯。
IK分詞器也提供了強大的停用詞功能,讓我們在索引時就直接忽略當前的停用詞匯表中的內容。
1、IKAnalyzer.cfg.xml配置文件內容添加
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties><comment>IK Analyzer 擴展配置</comment><!--用戶可以在這里配置自己的擴展字典 --><entry key="ext_dict">ext.dic</entry><!--用戶可以在這里配置自己的擴展停止詞字典--><entry key="ext_stopwords">stopword.dic</entry><!--用戶可以在這里配置遠程擴展字典 --><!-- <entry key="remote_ext_dict">words_location</entry> --><!--用戶可以在這里配置遠程擴展停止詞字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
# 新建停用詞 文件
vim stopword.dic
sde 是我添加的停用詞
4、重啟es服務
# 重啟服務
docker restart elasticsearch
docker restart kibana# 查看 日志
docker logs -f elasticsearch
5、測試效果
GET /_analyze
{"analyzer": "ik_max_word","text": "現在學習Java真是太好啦 奧力給 sde"
}
注意當前文件的編碼必須是 UTF-8 格式,嚴禁使用Windows記事本編輯