前言:
在es 2.*版本里面是沒有這兩個字段,只有string字段。
5.*之后,把string字段設置為了過時字段,引入text,keyword字段
那么今天我們來看一下,es在5.*之后,字符串類型的mapping應該怎么設置
實踐:
准備工作:
es在5.*之后,string類型常用三種,
1.默認的,就是我們不設置mapping直接往里面插入數據
2.我們設置mapping為text
3.我們設置mapping為keyword,將2里面的text改為keyword
4.我們分別往里面添加一個字段 name:張三李四,然后分別查找張三
添加: 查找:
結論一:我們發現類型為keyword的無法查找,可以得出keyword不支持分詞查詢 ,但另外兩個支持
5.我們繼續三個索引里面繼續添加姓名(添加幾個一樣的),此時我們要統計姓名相同的人的人數,那么我們必須用到聚合查詢
查詢text索引時,直接說不行
查詢xuzhan索引時,要在聚合字段加一個keyword就行
查詢key時,可以
結論二:text類型無法聚合查詢
那么至此我們可以總結出這三個在查詢上的優缺點了
總結
分詞 聚合
keyword 不支持 支持
text 支持 不支持
默認 支持 支持
此時的你是不是在想那以后就直接用默認類型就行了,萬能的,但是,但是,但是
經過上面的測試,可以發現text類型在存儲數據的時候會默認進行分詞,並生成索引。而keyword存儲數據的時候,不會分詞建立索引,顯然,這樣划分數據更加節省內存。為了性能考慮,我們應該仔細斟酌一下 text or keyword ?
