es安装ik分词器

IK分词器下载地址:

https://github.com/medcl/elasticsearch-analysis-ik/releases
下载ES版本对应的分词器即可
es安装ik分词器_第1张图片

安装ik分词器

  1. 将下载好的zip包解压,生成一个ik文件夹

  2. 将ik文件夹移动到ES安装目录下的plugins文件夹下(每台ES节点都要执行相同的操作)
    在这里插入图片描述

  3. 重启ES集群

自定义分词库

  1. vim在ik中的config目录中新建词库文件my_word.dic输入你定义的词保存。
  2. 修改ik中的config目录下面的IKAnalyzer.cfg.xml文件。
    es安装ik分词器_第2张图片
  3. 添加自定义分词需要重启ES。

ik分词热更新部署


words_location

words_location修改为http://xxx/myword远程文件地址,elasticsearch 大概 1min 后,会自动拉取文件,最长时间是 1min,不需要重启 ES 实例。

  1. 请求需要返回两个头部(header),一个是Last-Modified,一个是ETag,这两者都是字符串类型,只要有一个发生变化,该插件就会去抓取新的分词进而更新词库。
    es安装ik分词器_第3张图片
  2. 请求返回的内容格式是一行一个分词,换行符用\n即可。

IK分词器测试

ik_smart最粗粒度拆分

GET /_analyze
{
  "analyzer": "ik_smart",
  "text":"这个美女很好看"
}

ik_max_word最细粒度拆分

GET /_analyze
{
  "analyzer": "ik_max_word",
  "text":"这个美女很好看"
}

IK分词器使用

创建索引,字段title的类型为text。所以在数据写入时会进行分词存储。
通过analyzer属性指定写入分词器采用细粒度模式ik_max_word;通过search_analyzer属性指定查询时采用智能模式ik_smart

PUT new_index
{
  "mappings": {
    "properties": {
      "id": {
        "type": "long"
      },
      "title": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        },
        "analyzer": "ik_max_word",
        "search_analyzer": "ik_smart"
      }
    }
  }
}

在索引时,只会去看字段有没有定义analyzer,有定义的话就用定义的,没定义就用ES预设的。
在查询时,会先去看字段有没有定义search_analyzer,如果没有定义,就去看有没有analyzer,再没有定义,才会去使用ES预设的。


创作不易,求关注,点赞,收藏,谢谢~

你可能感兴趣的:(elasticsearch,大数据,搜索引擎,ik分词器)