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

     根據之前搜索的研究,基本上簡單的搜索已經完成,但其實很多地方還是不滿足。
   比如用戶切換輸入法有誤或者中病毒丟失輸入法,只能輸入拼音搜索。那麼我就來研究一下咯!
   首先我們看看需要準備一些什麼?
   1.es拼音插件
   2.拼音插件的mapping
   3.拼音搜索

1.es拼音插件

下載地址:https://github.com/medcl/elasticsearch-analysis-pinyin/releases
開始使用ElasticSearch(九)之拼音搜索

根據你的版本下載對應的插件,下載我框起來的那個。下面2個是源碼,需要自己打包。
下載成功後解壓縮到es的plugins文件夾的pinyin文件夾裏面。如果沒有就創建一個。
開始使用ElasticSearch(九)之拼音搜索

然後創建拼音的索引在type上,寫法就是固定的,照抄就好

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

然後測試一下看看拼音插件有沒有安裝成功

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

2.拼音插件的mapping

這裏的series是我的字段,你們不能照抄,要根據自己的字段修改。
開始使用ElasticSearch(九)之拼音搜索

然後導入數據(可以看第四節,操作步驟一樣)
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.拼音搜索

數據導入成功後,我來測試一下。
開始使用ElasticSearch(九)之拼音搜索
搜索的時候需要在匹配字段後面加上後綴.pinyin。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章