本文首发于公众号:Hunter后端

原文链接:es笔记四之中文分词插件安装与使用

前面我们介绍的操作及演示都是基于英语单词的分词,但我们大部分使用的肯定都是中文,所以如果需要使用分词的操作肯定也是需要使用中分分词。

这里我们介绍一下如何安装中文分词插件。

在介绍安装之前,我们可以先来测试一下没有中文分词的分词效果,我们先来插入一条数据:

PUT /exam/_doc/16
{
"name" : "张三丰",
"address": "一个苹果"
}

如果是中文分词,我们可以想到 '一个苹果' 应该会被分为 '一个' 和 '苹果' 这两个词,但是默认的分词是无法这样分词的,我们可以尝试搜索一下:

GET /exam/_search
{
"query": {
"term": {
"address": "一个"
}
}
}

可以发现是无法搜索到结果的。

我们可以查看一下这条数据的 address 字段被分词的结果:

GET /exam/_doc/16/_termvectors?fields=address

其中,_doc 后面的 16 是我们要查询的数据的 id,fields 后面跟着的要查看的分词结果的字段名。

可以看到 一个苹果 这个字符串,被挨个分成了四个。

然后我们来安装一下中文分词的插件。

安装中文分词插件

在 elasticsearch 安装的目录下,执行下面的语句:

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.0/elasticsearch-analysis-ik-7.6.0.zip

这里我们安装的是 7.6.0 版本的 es,所以安装对应的分词插件。

然后我们重新建立这个 index,为 address 字段加上指定的分词插件:

挨个执行下面的命令:

DELETE /exam/

PUT /exam

PUT /exam/_mapping
{
"properties": {
"address": {
"type": "text",
"analyzer": "ik_max_word",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"name": {
"type": "keyword"
}
}
}

这里,和第一次创建 mapping 的时候比,多了一行 analyzer 的定义。

然后我们再次重复上面的插入和查询操作:

PUT /exam/_doc/16
{
"name" : "张三丰",
"address": "一个苹果"
} GET /exam/_search
{
"query": {
"term": {
"address": "一个"
}
}
}

可以看到,这次我们搜索 一个,就可以查询到数据了。

然后我们看下这条数据的 address 的分词结果:

GET /exam/_doc/16/_termvectors?fields=address

可以看到,这次返回的结果除了单独的 '一' 和 '个' 之外,还有被分成整体的 '一个' 和 '苹果'。

查看分词结果

这里额外介绍一下如何查看字符串的分词。

如果我们有一个字符串,想要知道它会被如何分词,可以直接使用下面的命令:

POST /_analyze
{
"analyzer": "ik_smart",
"text": "一个苹果"
}

其中,analyzer 是指定的分词的插件,如果不指定就会使用默认的分词功能。

中文分词插件的github 地址如下:https://github.com/medcl/elasticsearch-analysis-ik

如果想获取更多后端相关文章,可扫码关注阅读:

es笔记四之中文分词插件安装与使用的更多相关文章

  1. ElasticSearch(四) ElasticSearch中文分词插件IK的简单测试

    先来一个简单的测试 # curl -XPOST "http://192.168.9.155:9200/_analyze?analyzer=standard&pretty" ...

  2. ElasticSearch(三) ElasticSearch中文分词插件IK的安装

    正因为Elasticsearch 内置的分词器对中文不友好,会把中文分成单个字来进行全文检索,所以我们需要借助中文分词插件来解决这个问题. 一.安装maven管理工具 Elasticsearch 要使 ...

  3. Elasticsearch安装中文分词插件ik

    Elasticsearch默认提供的分词器,会把每一个汉字分开,而不是我们想要的依据关键词来分词.比如: curl -XPOST "http://localhost:9200/userinf ...

  4. Elasticsearch 中文分词(elasticsearch-analysis-ik) 安装

    由于elasticsearch基于lucene,所以天然地就多了许多lucene上的中文分词的支持,比如 IK, Paoding, MMSEG4J等lucene中文分词原理上都能在elasticsea ...

  5. elasticsearch学习笔记-倒排索引以及中文分词

    我们使用数据库的时候,如果查询条件太复杂,则会涉及到很多问题 1.无法维护,各种嵌套查询,各种复杂的查询,想要优化都无从下手 2.效率低下,一般语句复杂了之后,比如使用or,like %,,%查询之后 ...

  6. ElasticSearch 中文分词插件ik 的使用

    下载 IK 的版本要与 Elasticsearch 的版本一致,因此下载 7.1.0 版本. 安装 1.中文分词插件下载地址:https://github.com/medcl/elasticsearc ...

  7. Elasticsearch安装ik中文分词插件(四)

    一.IK简介 IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包.从2006年12月推出1.0版开始, IKAnalyzer已经推出了4个大版本.最初,它是以开源项目Lu ...

  8. Elasticsearch如何安装中文分词插件ik

    elasticsearch-analysis-ik 是一款中文的分词插件,支持自定义词库. 安装步骤: 1.到github网站下载源代码,网站地址为:https://github.com/medcl/ ...

  9. ES之一:Elasticsearch6.4 windows安装 head插件ik分词插件安装

    准备安装目标:1.Elasticsearch6.42.head插件3.ik分词插件 第一步:安装Elasticsearch6.4 下载方式:1.官网下载 https://www.elastic.co/ ...

  10. ElasticSearch-5.0.0安装中文分词插件IK

    Install IK 源码地址:https://github.com/medcl/elasticsearch-analysis-ik,git clone下来. 1.compile mvn packag ...

随机推荐

  1. MySQL基础随笔记

    [1]SQL语言入门      我们都知道,数据库管理人员(DBA)通过数据库管理系统(DBMS)可以对数据库(DB)中的数据进行操作,但具体是如何操作的呢?这就涉及到我们本节要讲的SQL语言.SQL ...

  2. Spring--依赖注入:setter注入和构造器注入

    依赖注入:描述了在容器中建立Bean于Bean之间依赖关系的过程 setter注入 在本来已经在service里面引用了bean的相关方法的基础上,再引用之前已经写过的userDao的对象,即在ser ...

  3. Fiddler一些用法学习记录

    最近项目中用Fiddler较多,只会之前掌握的一些最简单的用法显得有点不太够.记录一下学习到的新用法. 一.需要mock.打开AutoResponder,Add Rule,填上需要mock的网址,需要 ...

  4. k8s容器互联-flannel host-gw原理篇

    k8s容器互联-flannel host-gw原理篇 容器系列文章 容器系列视频 简析host-gw 前面分析了flannel vxlan模式进行容器跨主机通信的原理,但是vxlan模式需要对数据包进 ...

  5. java多线程--7 线程协作 线程池

    java多线程--7 线程协作 线程池 并发协作模型--生产者消费者模式 这是一个线程同步问题,生产者和消费者共享同一个资源,并且生产者和消费者之间互相依赖,互为条件. java提供了几个方法解决线程 ...

  6. HDFS写操作(简单源码解读)

    HDFS最重要的就是写流程了,学校老师教的时候也是重点介绍这个过程(虽然我并没有在任何面试中被问到过).下面从画图和文字两个过程介绍写流程,这次读了源代码之后对整个过程更加清晰了. 一.图解 二.文字 ...

  7. 记某gov门户网站渗透测试(已修复)

    前言: 免责声明:涉及到的所有技术仅用来学习交流,严禁用于非法用途,未经授权请勿非法渗透.否则产生的一切后果自行承担! 该渗透测试项目为已授权项目,本文已对敏感部分做了相关处理. 正文: SQL注入( ...

  8. DES算法图解、密码学

  9. 非关系型数据库---Redis安装与基本使用

    一.数据库类型 关系数据库管理系统(RDBMS) 非关系数据库管理系统(NoSQL) 按照预先设置的组织机构,将数据存储在物理介质上(即:硬盘上) 数据之间可以做无关联操作 (例如: 多表查询,嵌套查 ...

  10. [Wechat]概念辨析:微信的生态平台/运管平台

    0 引言 微信的各类XX社区.XX文档.XX平台,实在是太多,让人眼花缭乱.必须得理一理了. 1 微信公众平台 https://mp.weixin.qq.com/ 即 微信公众号(小程序 / 订阅号 ...