Elasticsearch默认提供的分词器,会把每个汉字分开,而不是我们想要的根据关键词来分词,我是中国人 不能简单的分成一个个字,我们更希望 “中国人”,“中国”,“我”这样的分词,这样我们就需要安装中文分词插件,ik就是实现这个功能的。

  elasticsearch-analysis-ik 是一款中文的分词插件,支持自定义词库。

  现在开始安装ik分词器,安装之前,先说明一些变化:

  1. 之前可以在node节点上配置index默认的分词器,如果是多节点,那么在每个节点上都配置就行了。这个有点不灵活,所以。5.0之后,ES已经不再支持在elasticsearch.yml中配置分词器,改而在新建索引时,使用settings去配置,这个会在后面的编程中说到。
  2. 之前使用delete-by-query插件来实现type的整个删除。这个插件也是从5.0开始没有了,被整合到了ES的Core中

  3.从5.0开始ik的tokenizer发生了变化,提供了两种,一种为ik_smart,一种为ik_max_word。直接一点,ik_max_word会尽量从输入中拆分出更多  token,而ik_smart则相反,个人感觉,ik_max_word就是原来的ik,ik_smart是新加的。

下载

  有两种方式,一个是下载源码自己编译好后再上传到ES的插件库,第二种方法是直接下载编译好的上传。

1.源码安装

  源码地址:

  用kibana查看一下,后续会谈到如何这样做。

  至此ES+Kibana+IK安装好了。从2.4.1到5.X版本号跨度很大,很多地方也发生了很多变化,总体来说,更简便了。

配置IKAnalyzer.cfg.xml

  IKAnalyzer.cfg.xml 在{conf}/analysis-ik/config/IKAnalyzer.cfg.xml 或 {plugins}/elasticsearch-analysis-ik-*/config/IKAnalyzer.cfg.xml中

复制代码
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"><properties>    <comment>IK Analyzer 扩展配置</comment>    <!--用户可以在这里配置自己的扩展字典 -->    <entry key="ext_dict">custom/mydict.dic;custom/single_word_low_freq.dic</entry>     <!--用户可以在这里配置自己的扩展停止词字典-->    <entry key="ext_stopwords">custom/ext_stopword.dic</entry>     <!--用户可以在这里配置远程扩展字典 -->    <entry key="remote_ext_dict">location</entry>     <!--用户可以在这里配置远程扩展停止词字典-->    <entry key="remote_ext_stopwords">http://xxx.com/xxx.dic</entry></properties>
复制代码

热更新 IK 分词使用方法

  目前该插件支持热更新 IK 分词,通过上文在 IK 配置文件中提到的如下配置

     <!--用户可以在这里配置远程扩展字典 -->    <entry key="remote_ext_dict">location</entry>     <!--用户可以在这里配置远程扩展停止词字典