当前位置: 首页 > news >正文

在elasticsearch8.3中安装elasticsearch-analysis-ik中文分词插件


title: 在elasticsearch8.3中安装elasticsearch-analysis-ik中文分词插件
date: 2022-08-28 00:00:00
tags:

  • ElasticSearch
  • elasticsearch-analysis-ik
  • 中文分词插件
    categories:
  • ElasticSearch

安装

手动下载

  • 在官方发布页面下载安装包 elasticsearch-analysis-ik-[版本].zip,其版本与你安装的ES要相同。
  • 执行命令 ~/elasticsearch-8.3.3/plugins/analysis-ik 创建ik插件存储目录,将上面的文件解压后放到analysis-ik目录内:
tianmx@mydebian:[~/elasticsearch-8.3.3/plugins/analysis-ik]: ll
总用量 1.5M
drwxr-xr-x 3 tianmx tianmx 4.0K  828 23:09 ./
drwxr-xr-x 5 tianmx tianmx 4.0K  828 23:08 ../
-rw-r--r-- 1 tianmx tianmx 258K  929  2020 commons-codec-1.9.jar
-rw-r--r-- 1 tianmx tianmx  61K  913  2020 commons-logging-1.2.jar
drwxr-xr-x 2 tianmx tianmx 4.0K  828 17:05 config/
-rw-r--r-- 1 tianmx tianmx  54K  828 22:56 elasticsearch-analysis-ik-8.3.3.jar
-rw-r--r-- 1 tianmx tianmx 720K  929  2020 httpclient-4.5.2.jar
-rw-r--r-- 1 tianmx tianmx 320K  929  2020 httpcore-4.4.4.jar
-rw-r--r-- 1 tianmx tianmx 1.8K  828 22:56 plugin-descriptor.properties
-rw-r--r-- 1 tianmx tianmx  125  828 22:56 plugin-security.policy

远程安装

  • 使用 elasticsearch-plugin 安装(从 v5.5.1 版本开始支持)
  • 执行命令 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/[版本]/elasticsearch-analysis-ik-[版本].zip 将自动下载并解压到插件目录。
  • 下载插件的地址需从IK官方Github发布页面上复制,注意版本号与你安装的ES一致。

手动编译

一般来说官方会适时发布与新版本相匹配包,但有时也并不会那么及时,在写本篇文章时并没有8.3.3的版本。另外如果你想对源码作一些改造调整的话,还是自己编译最方便。

  • 编译环境
    • IntelliJ IDEA 2022.2.1(非必需,你可以用文本编辑器)
    • Apache Maven 3.8.1
    • OpenJDK 17
  • 从Github上下载最新源码,这里我们取master分支的代码。
  • 需要对源码进行如下调整才能顺利编译:
    1. 打开 pom.xml 文件将 <elasticsearch.version>7.16.0</elasticsearch.version> 修改为 <elasticsearch.version>8.3.3</elasticsearch.version>
    2. 将文中 <maven.compiler.target>1.8</maven.compiler.target> 修改为 <maven.compiler.target>17</maven.compiler.target>
    3. 将文中 maven-javadoc-plugin 插件配置整个删除掉。
    4. 打开 IkAnalyzerProvider.java 类修复构造方法报错问题,也就是将 super(indexSettings, name, settings); 改为 super(name, settings); 即可。
  • 在IDEA的Maven窗口中找到Profiles节点,然后选中release,点击左上角刷新按钮,如果想跳过单元测试可点击 Skip Tests 按钮。按住Ctrl键并用鼠标依次单击选中clean和package,最后单击工具类绿色播放按钮。
  • (可选项)如果你想通过命令行执行maven进行编译,可以执行 mvn -DskipTests=true clean package -P release
  • 如果一切顺利你应该能够在编译目录 target/releases/elasticsearch-analysis-ik-8.3.3.zip 中看到打好的zip包。
  • 接下来按上面介绍的手动下载章节来完成安装工作。

测试

注意:插件安装完后要重启ES。

  • 重启ES后执行如下命令查看插件是否安装成功
tianmx@mydebian:[~/elasticsearch-8.3.3]: ./bin/elasticsearch-plugin list
analysis-icu
analysis-ik
analysis-smartcn
  • 如果你已经安装好了Kibana,那么可以进入 http://192.168.0.110:5601/app/dev_tools#/console 页面来测试一下,随便找个索引就可以发送请求测试。
  • ik_smart分词器: 会做最粗粒度的拆分,适合 Phrase 查询。
GET metrics-endpoint.metadata_current_default/_analyze
{"text": "中华人民共和国MN","tokenizer": "ik_smart"
}{"tokens": [{"token": "中华人民共和国","start_offset": 0,"end_offset": 7,"type": "CN_WORD","position": 0},{"token": "mn","start_offset": 7,"end_offset": 9,"type": "ENGLISH","position": 1}]
}
  • ik_max_word分词器: 会将文本做最细粒度的拆分,会穷尽各种可能的组合,适合 Term Query。
GET metrics-endpoint.metadata_current_default/_analyze
{"text": "中华人民共和国MN","tokenizer": "ik_max_word"
}{"tokens": [{"token": "中华人民共和国","start_offset": 0,"end_offset": 7,"type": "CN_WORD","position": 0},{"token": "中华人民","start_offset": 0,"end_offset": 4,"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": 7,"type": "CN_WORD","position": 4},{"token": "人民","start_offset": 2,"end_offset": 4,"type": "CN_WORD","position": 5},{"token": "共和国","start_offset": 4,"end_offset": 7,"type": "CN_WORD","position": 6},{"token": "共和","start_offset": 4,"end_offset": 6,"type": "CN_WORD","position": 7},{"token": "国","start_offset": 6,"end_offset": 7,"type": "CN_CHAR","position": 8},{"token": "mn","start_offset": 7,"end_offset": 9,"type": "ENGLISH","position": 9}]
}
  • 我们前面有安装过analysis-smartcn,如果想测试它只需要将 tokenizer 的值改为 smartcn_tokenizer 即可。
  • IK官方有提供一份测试说明,跟着操作一遍也能验证IK安装是否成功。
http://www.lryc.cn/news/11952.html

相关文章:

  • 初识K8s
  • 搭建企业级docker仓库—Harbor
  • 【Linux】shell中运算符(整数、字符串)
  • 【从零单排Golang】第八话:通过cache缓存模块示范interface该怎么用
  • 解析从Linux零拷贝深入了解Linux-I/O(上)
  • JavaScript系列之公有、私有和静态属性和方法
  • 过滤器与拦截器
  • spring boot 和cloud 版本升级
  • untiy 录制网络摄像头视频并保存到本地文件
  • 微服务架构设计模式-(15)部署
  • Redis:数据结构
  • 2.18 设置language和中文输入法
  • 图解LeetCode——剑指 Offer 28. 对称的二叉树
  • Qt Desginer布局方法
  • C/C++、Java、Python的比较及学习(3)
  • 智慧校园建设方案
  • ARM uboot 源码分析5 -启动第二阶段
  • 【ip neigh】管理IP邻居( 添加ARP\NDP静态记录、删除记录、查看记录)
  • Java程序员线上排查问题神器-Arthas
  • 上市公司企业持续创新能力、创新可持续性(原始数据+计算代码+计算结果)(2008-2021年)
  • 华为OD机试 - 考古学家(JS)
  • Leetcode.2100 适合打劫银行的日子
  • linux ubuntu查日志信息以及错误排查
  • DOS经典软件,落下帷幕,新型国产平台,蓬勃发展
  • MongoDB数据存储格式
  • ARC126D Pure Straight
  • 基于RK3588的嵌入式linux系统开发(四)——uboot镜像下载(基于RKDevTool工具)
  • 设计模式之策略模式与责任链模式详解和应用
  • 广度优先搜索(BFS)-蓝桥杯
  • Java Type类