ES之一:API使用及常用概念
阿新 • • 發佈:2021-08-09
ES使用中文分詞器進行分詞
windows版本安裝中文分詞器: IK 分詞器
#1.下載與ES版本一模一樣版本的IK分詞器, 否則可能導致失敗 (這裡選擇v7.14.0) https://github.com/medcl/elasticsearch-analysis-ik/releases #2.將elasticsearch-analysis-ik-7.14.0.zip拷貝到 elasticsearch-7.14.0\plugins目錄下, 在該目錄下建立ik目錄, 將elasticsearch-analysis-ik-7.14.0.zip解壓到ik目錄, 然後移除elasticsearch-analysis-ik-7.14.0.zip, 切記一定要移除這個zip包 #3.直接啟動或重新啟動ES即可.
IK分詞器基礎知識
IK中文分詞器外掛給我們提供了兩個分析器。
ik_max_word: 會將文字做最細粒度的拆分
ik_smart:會做最粗粒度的拆分
#直接測試下IK分詞器
POST _analyze
{
"analyzer": "ik_smart",
"text": "中華人民共和國國歌"
}
POST _analyze
{
"analyzer": "ik_max_word",
"text": "中華人民共和國國歌"
}
建立索引時指定IK分詞器
PUT /ik_index { "mappings": { "properties": { "id": { "type": "long" }, "title": { "type": "text", "analyzer": "ik_max_word" } } } }
檢視索引情況(是否成功使用了IK分詞器)
GET /ik_index/_mapping
為索引指定預設的分詞器
PUT ik_index
{
"settings": {
"analysis": {
"analyzer": {
"default": {
"type": "ik_max_word"
}
}
}
}
}
測試下中文分詞效果
PUT /ik_index/_doc/1 { "id": 99, "title": "這是一篇中文文章。" } #應該查到結果 GET /ik_index/_search { "query": { "match": { "title": "文章" } } } #不應該查到結果 GET /ik_index/_search { "query": { "match": { "title": "文" } } }
自定義IK分詞器的字典
自定義前檢視分詞效果
GET /_analyze
{
"analyzer": "ik_max_word",
"text": "你好追夢人"
}
自定義分詞字典
1.在D:\elasticsearch-7.14.0\plugins\ik\config目錄下, 建立zy.dic檔案(注意字符集為UTF-8)
2.在zy.dic中首行直接輸入三個字: 追夢人
3.編輯D:\elasticsearch-7.14.0\plugins\ik\config\IKAnalyzer.cfg.xml, 將zy.dic填入下處:
<entry key="ext_dict">zy.dic</entry>
4.啟動或者重啟ES.
再次檢視分詞效果即可
GET /_analyze
{
"analyzer": "ik_max_word",
"text": "你好追夢人"
}