您的位置:首页 > 其它

开始使用ElasticSearch(九)之拼音搜索

2021-02-01 12:02 447 查看
根据之前搜索的研究,基本上简单的搜索已经完成,但其实很多地方还是不满足。
比如用户切换输入法有误或者中病毒丢失输入法,只能输入拼音搜索。那么我就来研究一下咯!
首先我们看看需要准备一些什么?
1.es拼音插件
2.拼音插件的mapping
3.拼音搜索

1.es拼音插件

下载地址:https://github.com/medcl/elasticsearch-analysis-pinyin/releases

根据你的版本下载对应的插件,下载我框起来的那个。下面2个是源码,需要自己打包。
下载成功后解压缩到es的plugins文件夹的pinyin文件夹里面。如果没有就创建一个。

然后创建拼音的索引在type上,写法就是固定的,照抄就好

然后测试一下看看拼音插件有没有安装成功

2.拼音插件的mapping

这里的series是我的字段,你们不能照抄,要根据自己的字段修改。

然后导入数据(可以看第四节,操作步骤一样)
1.这里有一个蛮关键的地方,我用的7.6.2的es版本只支持一个type,在导入设置output的时候
一定要和之前定义的一致(默认为:_doc),不然数据导不进去,界面还不报错,我后来也是查
看了es的log才找到原因。

2.在有数据进行mapping的时候失败,然后我将type从keyword改成text后映射成功,但是用拼音搜
索不到数据,我查不到原因是为什么,我从头开始做用type=“text” 再导入数据也是可以搜出来拼音结
果的,难道需要先mapping后导入数据?希望大神指导。

3.mapping的时候type=”keword“类型不能使用match_phrase_prefix查询,会报错:无法create,改成
type=”text“后就可以使用了。

所以我现在新建了一个索引,重新设置然后重新导入数据就可以。很笨的方法。
以上是我遇到的一些坑,希望对你们有帮助,也希望大神指导。
有需要现成请求的,我写好的查询模板的朋友可以私我

3.拼音搜索

数据导入成功后,我来测试一下。

搜索的时候需要在匹配字段后面加上后缀.pinyin。

拼音搜索就差不多配置完成了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: