元數(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)換再進行查詢操作。