ES之一:API使用及常用概念

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": "你好追梦人"
}
posted @ 2021-08-08 22:25  psy_code  阅读(227)  评论(0编辑  收藏  举报