ES模糊查詢(xún)失效的坑以及解決方案
項(xiàng)目場(chǎng)景:
最近在做需求開(kāi)發(fā)的時(shí)候,有個(gè)需求,需要根據(jù)關(guān)鍵字去ES中進(jìn)行模糊搜索。于是首先想到了wildcard查詢(xún),根據(jù)關(guān)鍵字,利用*通配符,類(lèi)似于mysql中的like一樣進(jìn)行模糊搜索。
問(wèn)題描述
但是遇到了問(wèn)題就是,根據(jù)單個(gè)漢字能正常模糊搜索,多個(gè)漢字就無(wú)法查詢(xún)出數(shù)據(jù)。單個(gè)漢字正常查詢(xún):
多個(gè)漢字無(wú)法查出數(shù)據(jù):
于是我就百度找解決方案,很多人說(shuō)都說(shuō)在查詢(xún)關(guān)鍵字后面加 .keyword 就可以正常查詢(xún)了,于是我接著嘗試,
結(jié)果還是不能正常查詢(xún),而且原來(lái)單個(gè)漢字能查詢(xún)的,現(xiàn)在也不行了
原因分析:
于是我懷疑是字段類(lèi)型導(dǎo)致的,就有了下面這個(gè)我自己建的blog的測(cè)試索引。
咱們現(xiàn)在只關(guān)心索引中的name,newName1,newName2,newName3這4個(gè)字段,可以看到這4個(gè)字段的數(shù)據(jù)類(lèi)型不同?,F(xiàn)在創(chuàng)建一條數(shù)據(jù),
根據(jù)name模糊查詢(xún)
可以看到在keyword類(lèi)型下,無(wú)論單個(gè)漢字,還是多個(gè)漢字都可以正常查詢(xún)
- newName1的類(lèi)型為text,最上面就是這種情況,單個(gè)漢字可以,多個(gè)漢字不行
- newName2的類(lèi)型為wildcard,跟keyword情況一樣
- newName3的類(lèi)型為text,但是附加了keyword類(lèi)型
單個(gè)漢字正常查詢(xún)
多個(gè)漢字不能查詢(xún)
加上keyword可以正常查詢(xún)
總結(jié):
- text類(lèi)型,es會(huì)分詞導(dǎo)致多個(gè)漢字不能正常正常查詢(xún)
- keyword不分詞可以正常查詢(xún)
- wildcard和keyword類(lèi)似
- text類(lèi)型附加keyword類(lèi)型,相當(dāng)于支持兩種類(lèi)型,默認(rèn)text,但是可以通過(guò)關(guān)鍵字加.keyword變成keyword類(lèi)型
到此這篇關(guān)于ES模糊查詢(xún)失效的坑以及解決方案的文章就介紹到這了,更多相關(guān)ES模糊查詢(xún)失效內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java區(qū)分絕對(duì)路徑和相對(duì)路徑的方法
這篇文章主要介紹了java區(qū)分絕對(duì)路徑和相對(duì)路徑的方法,實(shí)例分析了java針對(duì)路徑操作的相關(guān)技巧,需要的朋友可以參考下2015-04-04IDEA創(chuàng)建Java項(xiàng)目保姆級(jí)教程(超詳細(xì)!)
這篇文章主要給大家介紹了關(guān)于IDEA創(chuàng)建Java項(xiàng)目保姆級(jí)教程的相關(guān)資料,Java是一種廣泛使用的編程語(yǔ)言,廣泛用于Web應(yīng)用程序和客戶(hù)端應(yīng)用程序的開(kāi)發(fā),文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09SpringBoot對(duì)靜態(tài)資源的映射規(guī)則詳解解讀
這篇文章主要介紹了SpringBoot對(duì)靜態(tài)資源的映射規(guī)則詳解解讀,在Spring Boot中,映射規(guī)則是用來(lái)定義URL與控制器方法之間的映射關(guān)系的,通過(guò)映射規(guī)則,可以將特定的URL請(qǐng)求映射到相應(yīng)的控制器方法上,從而實(shí)現(xiàn)請(qǐng)求的處理和響應(yīng)的返回,需要的朋友可以參考下2023-10-10基于params、@PathVariabl和@RequestParam的用法與區(qū)別說(shuō)明
這篇文章主要介紹了方法參數(shù)相關(guān)屬性params、@PathVariabl和@RequestParam用法與區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08