根據之前搜索的研究,基本上簡單的搜索已經完成,但其實很多地方還是不滿足。 比如用戶切換輸入法有誤或者中病毒丟失輸入法,只能輸入拼音搜索。那麼我就來研究一下咯! 首先我們看看需要準備一些什麼? 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。
拼音搜索就差不多配置完成了。