Elasticsearch (ES篇): IK分词器的安装使用

424 阅读2分钟

「这是我参与2022首次更文挑战的第20天,活动详情查看:2022首次更文挑战」。

Kibana的SQL查询

我们上面那些是DSL查询,DSL查询可以改造成SQL查询,比如:;

POST /_sql?format=txt

{

    "query": "select * from powermall"

}

注意:如果index库中没有数据,查询会报错;

ElasticHD工具

下载:github.com/360EntSecGr… 

ElasticHD 支持ES监控、实时搜索、索引列表信息查看、SQL转换成DSL等功能;

下载下来是一个zip压缩包;

解压:unzip elasticHD_linux_amd64.zip

Linux下: ./ElasticHD -p 0.0.0.0:9800 启动

如果发生错误: exec: "xdg-open": executable file not found in $PATH

安装xdg-utils:

yum install xdg-utils -y

然后浏览器访问 192.168.194.128:9800

注意如果ElasticHD版本不匹配elasticsearch版本,可能转换后的DSL语句有问题;

IK分词插件

Elasticsearch官方自带elasticsearch-analysis-ik分词器,这是一个将Lucence IK分词器集成到elasticsearch的ik分词器插件,并且支持自定义词典,源代码托管在github.com上:github.com/medcl/elast…,是elasticsearch中国社区负责人维护的项目,中国人维护的项目;

ik分词器介绍

  • 两种analyzer,你根据自己的需要自己选吧,但是一般是选用ik_max_word
  • ik_max_word: 会将文本做最细粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌”,会穷尽各种可能的组合;
  • ik_smart: 会做最粗粒度的拆分,比如会将“中华人民共和国国歌”拆分为“中华人民共和国,国歌”。

安装

1、在github上下载同elasticsearch匹配的版本;

2、将下载的zip包解压到elasticsearch安装目录/plugin/ik下

3、重启elasticsearch;

测试IK分词器

IK分词安装后有两种分词策略:ik_max_word和ik_smart;

ik_max_word:对输入文本根据词典穷尽各种分割方法是细力度分割策略;ik_smart:对输入文本根据词典以及歧义判断等方式进行一次最合理的粗粒度分割;

分词策略ik_max_word

GET _analyze

{

  "analyzer": "ik_max_word",

  "text": ["中华人民共和国国歌"]

}

分词策略ik_smart

GET _analyze

{

  "analyzer": "ik_smart",

  "text": ["中华人民共和国国歌"]

}