ElasticSearch進行term(terms)搜索大小寫問題

元數(shù)據(jù)

ES2.2版本,通過Head插件查看Es數(shù)據(jù)結(jié)果如圖
數(shù)據(jù)列表.png

傳入大寫進行Term和Terms查詢

1. 傳入大寫進行Term查詢
term查詢結(jié)果.png
2. 傳入大寫進行Terms查詢
terms查詢結(jié)果.png

傳入小寫進行Term和Terms查詢

1. 傳入小寫進行Term查詢
term小寫查詢結(jié)果.png
2. 傳入小寫進行Terms查詢
terms小寫查詢結(jié)果.png

terms查詢只需在數(shù)組里加上多個關(guān)鍵詞即可,比如如果要同時查詢"SOLO"和"CHORUS"的話,查詢語句為:

{
    "query":{
        "bool":{
            "must":{
                "terms":{
                    "test_singerType": ["solo","chorus"]
                }
            }
        }
    }
}

原因

在創(chuàng)建index對應(yīng)的mapping的某個field時,如果mapping沒有指定該field的標(biāo)準(zhǔn)化配置normalizer,如果寫入ES的時候是大寫,則搜索出來的結(jié)果也是大寫的(搜索結(jié)果截圖證明了這一點)。但是創(chuàng)建的索引確實是小寫的,前面兩個搜索結(jié)果圖中查詢條件傳的是大寫,所以使用term和terms的時候返回空了。
反之,但如果傳的小寫,則可以檢索到結(jié)果。
因此在使用API的時候就要注意啦,如果是這種類型的term或者terms查詢,則需要先進行大小寫的轉(zhuǎn)換再進行查詢操作。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容