天天看點

[ElasticSearch]資料類型keyword和text的差別

在 ES2.x 版本字元串資料是沒有 keyword 和 text 類型的,隻有string類型,ES更新到5版本後,取消了 string 資料類型,代替它的是 keyword 和 text 資料類型,那麼 keyword 和 text 有什麼差別了?

Text 資料類型被用來索引長文本,比如說電子郵件的主體部分或者一款産品的介紹。這些文本會被分析,在建立索引前會将這些文本進行分詞,轉化為詞的組合,建立索引。允許 ES來檢索這些詞語。text 資料類型不能用來排序和聚合。

curl -XPUT 'localhost:9200/employees/' -d '
{
    "mappings":{
        "employee":{
             "properties": {
                 "intro":"text"
             }
        }
    }
}
'
           

Keyword 資料類型用來建立電子郵箱位址、姓名、郵政編碼和标簽等資料,不需要進行分詞。可以被用來檢索過濾、排序和聚合。keyword 類型字段隻能用本身來進行檢索。

curl -XPUT 'localhost:9200/employees/' -d '
{
    "mappings":{
        "employee":{
             "properties": {
                 "name":"keyword"
             }
        }
    }
}
'
           

注意,如果不像以上通過mapping 配置索引時,遇到字元串類型時候的字端,系統會預設為“text”類型。檢索的時候對字元串進行分析。是以要想隻通過字段本身來進行檢索,還是需要按照上面把該字段改為“keyword”類型。

繼續閱讀