天天看点

elasticsearch6.2.3 安装以及配置IK 使用

虽然es在配置上要比solr简单许多,也更加灵活,基本上没有什么多余的配置,官网下载好后就可以直接使用,附一个下载地址https://www.elastic.co/downloads/past-releases

注意:ES版本差异贼大,所以尽量保证版本一致

在测试中,所有的演示我均通过HTTP来请求,测试工具我采用postman

首先将官方下载的ES解压一下我们可以看到如下目录(linux下大同小异),

elasticsearch6.2.3 安装以及配置IK 使用

然后我们通过命令行进入bin目录下执行elasticsearch命令,ES就完美运行了,地址栏中输入127.0.0.1:9200就可以看到如下界面,说明运行成功。

elasticsearch6.2.3 安装以及配置IK 使用

看到这里是不是感觉很简单呢,,,下面我们来进行安装bug练习,,,不对,是安装ik分词器。

首先先说一下为什么要分词,我们随便找一段英语看一下他的分词效果,可以看到分词效果相对来说还是不错的

elasticsearch6.2.3 安装以及配置IK 使用

但是呢我们换成中文试一下,同样的查询条件,同样的HTTP请求,汉字却被拆分成一个一个的文字了

elasticsearch6.2.3 安装以及配置IK 使用
elasticsearch6.2.3 安装以及配置IK 使用

很明显,这并不是我们想要的效果,所以我们需要安装一个支持中文的分词器,这里我们可以使用ik进行分词,附IK地址https://github.com/medcl/elasticsearch-analysis-ik

版本号与ES一致,版本号与ES一致,版本号与ES一致

重要的事情说三次,只要差一个小版本ik就不能用了,首先,我们解压下载好的压缩文件,然后在ik的根目录下(包含pom.xml)执行mvn install 命令(下载依赖),不过需要提前安装maven,maven安装并不难大家可以在网上搜索一下,然后将生成的\target\releases\elasticsearch-analysis-ik-6.2.3.zip解压到ES的plugins\ik目录下,直接启动ES,不需要加配置文件,之前的ES中需要加配置文件,但这个版本并不需要。

我们尝试运行一下,我将请求体换成了:

{   
    "analyzer": "ik_max_word",
    "text":"看到这里是不是感觉很简单呢" 
}
           

展示效果:

{
  "tokens": [
    {
      "token": "看到",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "这里是",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "这里",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "是不是",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "不是",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "感觉",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "很简单",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "简单",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "呢",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_CHAR",
      "position": 
    }
  ]
}
           

ik有两种模式,上面的方式为最大方式,它会劲量详细的拆分,我们看到,“很简单”算一个词组,简单也算一个词组,而另一种方式为ik_smart方式

请求体:

{   
    "analyzer": "ik_smart",
    "text":"看到这里是不是感觉很简单呢" 
}
           

结果 :可以看到他只要分词过的字符就不会参与到下一次分词中了

{
  "tokens": [
    {
      "token": "看到",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "这里",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "是不是",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "感觉",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "很简单",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_WORD",
      "position": 
    },
    {
      "token": "呢",
      "start_offset": ,
      "end_offset": ,
      "type": "CN_CHAR",
      "position": 
    }
  ]
}
           

好了这就是关于elasticsearch安装以及IK的流程,由于篇幅太长,后续我会发表,增删改查java客户端,head等博客

继续阅读