es mapping設置之text or keyword


前言:
    在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 ?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM