ES[7.6.x\]學習筆記(四)字段類型(mapping)

在上一節中,咱們建立了索引,在建立索引的時候,咱們指定了mapping屬性,mapping屬性中規定索引中有哪些字段,字段的類型是什麼。在mapping中,咱們能夠定義以下內容:java

  • 類型爲String的字段,將會被全文索引;shell

  • 其餘的字段類型包括:數字、日期和geo(地理座標);json

  • 日期類型的格式;數組

  • 動態添加字段的映射規則;微信

字段的可用類型以下:app

  • 簡單的類型,好比:text,keyword,date,long,double,boolean,ip。咱們能夠看到,類型當中沒有String,字符串的類型是text,全部text類型的字段都會被全文索引。數字類型有兩個,long(長整型)和double(浮點型)。ide

  • JSON的層級類型:Object(對象)和Nested(數組對象)。Object類型時,該字段能夠存儲一個JSON對象;Nested類型時,該字段能夠存儲一個數組對象。spa

  • 複雜的類型:包括 geo_point、geo_shape和completion。.net

在索引中建立映射

咱們在建立索引的時候能夠同時建立映射,就如同上一節的內容。也能夠在索引建立好之後,再去建立映射,請求的方式以下:code

PUT /my-index
{
 "mappings": {
   "properties": {
     "age":   { "type": "integer" },  
     "email": { "type": "keyword" },
     "name":   { "type": "text" }    
  }
}
}

請求的方法咱們要使用PUT,路徑是咱們的索引名稱,請求體當中是咱們爲索引添加的字段和字段的類型。

在存在的映射中添加字段

正如上面所示,咱們在一個索引中添加了字段,可是如今咱們要補充額外的字段,這時,咱們要怎麼作呢?

PUT /my-index/_mapping
{
 "properties": {
   "employee-id": {
     "type": "keyword",
     "index": false
  }
}
}

咱們使用PUT方法,後面跟隨咱們的索引名稱,再接上_mapping,請求體中是咱們新添加的映射字段,咱們指定了字段的類型爲keywordindex索引爲false,說明這個字段只用於存儲,不會用於搜索,搜索這個字段是搜索不到的。

咱們在更新字段時候,是不能修改字段的類型的。若是咱們要修改字段的類型,最好是新建一個新的字段,指定正確的類型,而後再更新索引,之後咱們只須要查詢這個新增的字段就能夠了。

查看索引中的字段映射

若是咱們要查看已知索引的字段映射,能夠向ES發送以下的請求:

GET /my-index/_mapping

請求的方法是GET,請求的路徑是咱們索引的名稱my-index,再加上一個_mapping,獲得的返回結果以下:

{
 "my-index" : {
   "mappings" : {
     "properties" : {
       "age" : {
         "type" : "integer"
      },
       "email" : {
         "type" : "keyword"
      },
       "employee-id" : {
         "type" : "keyword",
         "index" : false
      },
       "name" : {
         "type" : "text"
      }
    }
  }
}
}

返回的結果中,咱們能夠看到索引的名稱my-index,還有咱們添加的字段,也包括後續補充的employee-id字段。

好了,關於索引的字段映射就先給你們介紹到這裏。


本文分享自微信公衆號 - 牛初九(tech-java)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索