Elasticsearch自带的分词器对中文分词不是很友好,所以我们下载开源的IK分词器来解决这个问题。首先进入到plugins目录中下载分词器,下载完成后然后解压,再重启es即可。具体步骤如下: 注意:elasticsearch的版本和ik分词器的版本需要保持一致,不然在重启的时候会失败。可以在这查看所有版本,选择合适自己版本的右键复制链接地址即可。在该链接中找到符合自己版本的:https://github.com/medcl/elasticsearch-analysis-ik/releases

docker exec -it elasticsearch /bin/bash
cd /usr/share/elasticsearch/plugins/ 
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.5.1/elasticsearch-analysis-ik-7.5.1.zip
exit 
docker restart elasticsearch 

由于通过上述方式安装由于网络问题可能实现不了,所以可以通过离线安装

通过https://github.com/medcl/elasticsearch-analysis-ik/releases下载对应版本安装包
在es的plugins文件下(/usr/share/elasticsearch/plugins/)创建ik文件夹
cd /usr/share/elasticsearch/plugins/
mkdir ik
将下载好的安装包拷贝在这个文件夹下,同时减压即可

注意:安装es的ik分词器需要安装jdk

测试:

POST http://localhost:9200/_analyze?pretty=true
{
  "analyzer": "ik_max_word",
  "text": "中国人民的儿子"
}

结果:

{
  "tokens" : [
    {
      "token" : "中国人民",
      "start_offset" : 0,
      "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "中国人",
      "start_offset" : 0,
      "end_offset" : 3,
      "type" : "CN_WORD",
      "position" : 1
    },
    {
      "token" : "中国",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 2
    },
    {
      "token" : "国人",
      "start_offset" : 1,
      "end_offset" : 3,
      "type" : "CN_WORD",
      "position" : 3
    },
    {
      "token" : "人民",
      "start_offset" : 2,
      "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 4
    },
    {
      "token" : "的",
      "start_offset" : 4,
      "end_offset" : 5,
      "type" : "CN_CHAR",
      "position" : 5
    },
    {
      "token" : "儿子",
      "start_offset" : 5,
      "end_offset" : 7,
      "type" : "CN_WORD",
      "position" : 6
    }
  ]
}