[ElasticSearch]資料型別keyword和text的區別
阿新 • • 發佈:2019-02-11
在 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”型別。