Elasticsearch安装中文分词器IK Analyzer

这篇具有很好参考价值的文章主要介绍了Elasticsearch安装中文分词器IK Analyzer。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本文介绍IK Analyzer分词器的安装配置、使用以及ES数据迁移。


一、IK分词器的安装配置

1.克隆elasticsearch-analysis-ik

克隆IK分词器项目,根据README的描述选择对应版本的分支。浏览器访问ES的ip+端口就能看到版本信息,所以我需要切到master分支。
安装分词器,elasticsearch,中文分词安装分词器,elasticsearch,中文分词
打开pom需要调整一些依赖的版本,与你安装的es版本一致,否则无法使用插件。

<elasticsearch.version>7.9.2</elasticsearch.version>

修改版本后reload project,可能会编译不通过,需要修改代码,比如我遇到的这个问题工具类包路径变了,重新导包就行;另一个是父类的构造方法变了,填入对应的参数等。切换不同版本的elasticsearch包需要修改的部分可能不一样。
安装分词器,elasticsearch,中文分词
安装分词器,elasticsearch,中文分词

2.编译并安装分词器插件

使用maven的package打包项目后会在target生成一个releases目录,里面有一个zip包,elasticsearch-analysis-ik-version.zip
安装分词器,elasticsearch,中文分词

进入es安装目录,创建一个目录,再解压上述文件,其中config目录中包含分词词典,可以自定义词典。
安装分词器,elasticsearch,中文分词
到这一步就可以启动es测试分词效果了。
使用kibana访问

#ik_smart模式分词
GET /_analyze
{
  "analyzer": "ik_smart",
  "text": "中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"
}
#es默认分词
GET /_analyze
{
  "analyzer": "standard",
  "text": "中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"
}

3.自定义分词词典

自定义词典需要创建一个文本以dic结尾,每行一个词,且,编辑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">mydic.dic;mydic2.dic;</entry>
	 <!--用户可以在这里配置自己的扩展停止词字典-->
	<entry key="ext_stopwords"></entry>
	<!--用户可以在这里配置远程扩展字典 -->
	<!-- <entry key="remote_ext_dict">words_location</entry> -->
	<!--用户可以在这里配置远程扩展停止词字典-->
	<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

4.注意事项

1.关于ik的两种模式

ik_smart模式,是以最粗粒度进行分词。如果关键字本身就是分词库中的一个词语,那么将不会进一步分词;如果它包含多个分词库中的分词,每次取最先获取到的分词,再对剩余的词语分词。例如有“联想台式”、“台式计算机”、“计算机”三个分词;那么"联想台式计算机"的ik_smart分词结果为“联想台式”、“计算机”,而不会有“台式计算机”。(适合搜索时分词)
ik_max_word则会穷举所有的分词。(适合建立索引时进行分词)

2.词典只支持中文,因此中英混合词语会拆分,但是英文数字可以作为一个词语。
3.该插件虽然支持热更新分词库,但是只是针对搜索时进行的分词,底层的倒排索引并没有改变。

二、ES数据迁移

1.建立新的索引

因为原来没有使用中文分词器,中文会拆分成单独的字,所以倒排索引中全是单个字,这时候使用match搜索,搜索条件按词典分词了,但是词语并不能匹配到文档中的内容。所以需要重建建立索引,让ES按照我们的词典去建立倒排记录表。

2.将旧索引数据导入新索引

使用es的reindex操作,其中slices是分片数,可理解为多线程执行reindex操作,refresh是执行完后刷新。旧索引的名称是my_index_v1,新索引是my_index_v2

#重建索引
POST _reindex?slices=5&refresh
{
  "source": {
    "index": "my_index_v1"
  },
  "dest": {
    "index": "my_index_v2"
  },
  "script": {
    "source": """
    //我将索引中的myName改成了my_name,reindex时旧索引字段会默认copy进新索引,所以我需要删除myName,并将值赋值给my_name。如果没有这类操作,可以删除script。
    ctx._source.my_name = ctx._source.remove("myName");
    """,
    "lang": "painless"
  }
}

数据量大的话重建请求会超时,此时可以利用task查看它的任务

#查看reindex的任务列表需要显示任务详情
GET _tasks?detailed=true&actions=*reindex

任务完成后文档数量应与旧索引文档数量一致

GET /_cat/count/my_index_v2?v

之后将新索引添加别名,系统连接es时使用索引别名。文章来源地址https://www.toymoban.com/news/detail-516948.html

#添加别名
POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "my_index_v2",
        "alias": "my_index"
      }
    }
  ]
}

到了这里,关于Elasticsearch安装中文分词器IK Analyzer的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch07:ES中文分词插件(es-ik)安装部署

    在中文数据检索场景中,为了提供更好的检索效果,需要在ES中集成中文分词器,因为ES默认是按照英文的分词规则进行分词的,基本上可以认为是单字分词,对中文分词效果不理想。 ES之前是没有提供中文分词器的,现在官方也提供了一些,但是在中文分词领域,IK分词器是

    2024年02月03日
    浏览(69)
  • elasticsearch安装中文分词IK启动异常:java.nio.file.AccessDeniedException

    启动错误信息如下: 问题原因:plugins中添加的ik目录没有权限; 解决方案:进入elasticsearch容器对应plugins目录下,进行 chmod 777 ik 授权即可。

    2024年02月03日
    浏览(52)
  • windows环境基于Elasticsearch8.4.0的IK中文分词器的安装、部署、使用

    目录 问题现象: 解决方法: 1、下载IK中文分词器 2、部署 3、使用 前言(选看)       最近在重温Elasticsearch,看来一下官网,都出到8.4.3版本了。想当初学的时候用的还是5.6.8,版本更新了很多意味着有大变动。           windows环境基于Elasticsearch8.4.0的IK中文分词器的安

    2024年02月13日
    浏览(28)
  • Linux下安装ElasticSearch-analysis-ik中文分词器插件,以及可能出现的异常处理

            注意:安装可以采用在线方式、离线方式,但是不建议在线安装,速度超级慢,本文只介绍离线安装方式                 下载地址:https://github.com/medcl/elasticsearch-analysis-ik                 切记选择版本需要跟ElasticSearch保持一致,否则可能会出现一些未知的异

    2024年02月07日
    浏览(47)
  • Elasticsearch之ik中文分词篇

    es在7.3版本已经支持中文分词,由于中文分词只能支持到单个字进行分词,不够灵活与适配我们平常使用习惯,所以有很多对应中文分词出现,最近使用的是ik分词器,就说说它吧。 安装可以百度下有很多教程,需要注意的是ik分词器的版本要跟es版本对应上,避免出现不必要

    2024年02月02日
    浏览(51)
  • Elasticsearch7.15.2 安装ik中文分词器后启动ES服务报错的解决办法

    下载elasticsearch ik中文分词器,在elasticsearch安装目录下的plugins文件夹下创建名为ik的文件夹,将下载的ik中文分词器解压缩到新建的ik文件夹下,再次运行 ./bin/elasticsearch启动ES服务时出现以下错误: Exception in thread \\\"main\\\" java.nio.file.NotDirectoryException: /Users/amelia/work/elasticsearch-7.1

    2024年02月12日
    浏览(41)
  • Elasticsearch7.8.0版本进阶——IK中文分词器

    通过 Postman 发送 GET 请求查询分词效果,在消息体里,指定要分析的文本 输出结果如下: 由上图输出结果可知,ES 的默认分词器无法识别中文中测试、单词这样的词汇,而是简单的将每个字拆完分为一个词,这样的结果显然不符合我们的使用要求,所以我们需要下载 ES 对应

    2024年02月01日
    浏览(32)
  • es elasticsearch 十 中文分词器ik分词器 Mysql 热更新词库

    目录 中文分词器ik分词器 介绍 安装 使用分词器 Ik分词器配置文件 Mysql 热更新词库 介绍 中文分词器按照中文进行分词,中文应用最广泛的是ik分词器 安装 官网下载对应版本zip 下载  放到  plugins 目录 新建 ik文件夹 考入解析zip 重启 es //分成小单词 使用分词器 ik_max_word分成

    2024年02月07日
    浏览(51)
  • Elasticsearch教程(35) ik中文分词器+pinyin拼音分词器+同义词

    闲来无事,发现上一篇ES博客还是 去年9月份 写的中文ik分词器 pinyin 首字母 search_as_you_type 组合使用,该篇文章还挖了一个 大坑 没有填,快一年了,是时候填下坑了。 针对股票查询这个特点场景,再结合一般使用者的搜索习惯,暂时确定如下7种期望效果。 上一篇博客Elast

    2023年04月09日
    浏览(31)
  • elasticsearch 安装 IK 中文分词器插件提示找不到文件的异常(Exception in thread “main“ java.nio.file.NoSuchFileException)

    错误截图 在命令行窗口,执行如下命令安装 IK 中文分词器 失败。 错误日志 1、自己到github下载对应版本的ik中文分词器 上面命令中两个插件版本号应该和 Elasticsearch 的版本保持一致,我现在用的是 7.14.1 版本。 首先版本和命令是对得上的。 命令行窗口通过命令下载失败的话

    2024年04月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包