在 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”類型。