ElasticSearch 映射&分词

  在mysql中创建数据表格中,会对每个字段进行属性设置,而在ES也有相应的操作—映射;映射是定义一个文档是如何被处理的,这些属性字段是怎样被存储或者检索的,这些都是通过映射来操作的。
  ES包含了很多映射规则,具体的详见官方文档,在第一储存是,ES会去猜测字段的映射规则,当然也可以自己修改字段的映射规则;例如:来查询默认的映射规则,可以看出大致的规律,数字被默认为long类型,字符串被默认为text类型,并且text类型下有一个keyword属性用来进行精确匹配的
在这里插入图片描述
  当然,在实际应用中,肯定还有其他的映射规则,我们可以在储存后进行更改,也可以在存储前提前设置好

创建映射

在这里插入图片描述

添加新的字段映射

在这里插入图片描述

更新映射

  ES中如果一个属性的字段已存在,则不能更新映射,如果修改已经存在的映射,那么我们之前的检索规则就会失效,所以官方不允许修改映射,如果必须要修改映射,可以通过数据迁移实现,重新创建新的映射规则,然后将数据迁移过去

数据迁移

在这里插入图片描述
  
  ES有一个全文检索的核心—分词,它会将一段字符串,分成一个一个的单词,然后利用单词的相关性匹配,最终完成全文检索功能;分词在ES中使用分词器(tokenizer)接收一个字符流,将之分割为独立的tokens(词元),然后进行匹配;ES的分词器有很多,默认的是 “standard”,可以来测试哈,可以看到,中文是一个字一个字的拆分,而英文根据空格拆分,ES的分词器都是来支持英文的,而中文需要额外安装自己的分词器,否则就会向下图一样一个一个的拆分
在这里插入图片描述

IK分词器

  IK分词器是比较推荐的一个开源的分词器,安装比较简单,下载和自己安装的ES相同的版本,然后放在ES的plugins目录下解压即可,由于在创建容器时映射的plugins目录,可以直接在宿主机中进行操作

# 下载IK分词器
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.10.1/elasticsearch-analysis-ik-7.10.1.zip
# 解压文件
unzip elasticsearch-analysis-ik-7.10.1.zip
# 进入容器内部查询安装的插件
elasticsearch-plugin list
# 最后记得重启容器

  如果能查询到,说明IK分词器安装好了,接下来测试哈,ik有 “ik_smart” 和 “ik_max_word” 两种常用的分词器
在这里插入图片描述
在这里插入图片描述
  但是IK分词还是不能达到我们预期的期望,比如说它把 “牛逼的” 给拆开了,所以我们可以扩展词库

自定义词库

  添加自定义的词库,首先需要将词库文件,可以是一个txt文本,放在网络上,然后去配置ik分词器,可以使用nginx或者其他的web服务器都可以,推荐使用nginx,由于后面会单独出nginx的文章,在这里先不说nginx的配置
  例如我现在配置好了nginx并且通过网络可以访问到我的词库文件,然后在ik分词器的config目录下,修改IKAnalyzer.cfg.xml,这个文件就是ik的配置;也可以通过一个dic文件去添加分词,在ik的config目录下添加一个后缀名为.dic的文件,将之配置在ik的配置文件中

<?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">fenci.dic</entry>
	 <!--用户可以在这里配置自己的扩展停止词字典-->
	<entry key="ext_stopwords"></entry>
	<!--用户可以在这里配置远程扩展字典 -->
	<entry key="remote_ext_dict">http://192.168.0.109/images/fenci.txt</entry>
	<!--用户可以在这里配置远程扩展停止词字典-->
	<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

  配置完成后,重启ES,等ES启动后就可以测试我们的词库,这两种方式都可以,我建议使用第二种更简单
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

華小灼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值