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": "你好追梦人"
}