ElasticSearch 使用term搜索中文失败

ElasticSearch 使用term搜索中文失败

今天遇到一个问题,根据用户name进行搜索,使用中文搜索,搜索失败,使用英文搜索,搜索成功

示例一:使用term根据中文查询失败问题
在这里插入图片描述

经分析后,总结如下:

首先,要知道Term和Match的差别
1_Term查询不会对查询的字段进行分词查询,会采用精确匹配。
比如:name=“马云”,则会直接根据 “马云” 去搜索

2_Match会根据查询的字段进行分词,再进行分词查询
比如:name=“马云”,则会分词为 “马” 和 “云” 然后再去查询

具体怎么分词,可以使用es查询,示例:

使用ik_smart分词器查看分词效果,我们发现,马云被分开了
在这里插入图片描述
因此使用term 查询"马云",是查询不到的,查询"马"或"云"就可以查询到
在这里插入图片描述
解决方案:
使用ik分词器 + 扩展需要分词的中文

如何添加ik分词器,步骤如下
下载地址: https://github.com/medcl/elasticsearch-analysis-ik/releases
注意: es-ik分词插件版本一定要和es安装的版本对应
第一步:下载es的IK插件,解压后文件命名改为ik
在这里插入图片描述
第二步: 上传到/usr/local/elasticsearch-6.4.3/plugins
第三步: 重启elasticsearch即可

检查Ik分词器是否安装成功
在这里插入图片描述
示例二:使用term查询"苹果" 查询成功,因为苹果不再被分词为"苹"和"果"
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值