1. 程式人生 > >[ElasticSearch]資料型別keyword和text的區別

[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”型別。