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

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

  • 類型爲String的字段,將會被全文索引;
  • 其他的字段類型包括:數字、日期和geo(地理座標);
  • 日期類型的格式;
  • 動態添加字段的映射規則;

字段的可用類型如下:

  • 簡單的類型,比如:text,keyword,date,long,double,boolean,ip。我們可以看到,類型當中沒有String,字符串的類型是text,所有text類型的字段都會被全文索引。數字類型有兩個,long(長整型)和double(浮點型)。
  • JSON的層級類型:Object(對象)和Nested(數組對象)。Object類型時,該字段可以存儲一個JSON對象;Nested類型時,該字段可以存儲一個數組對象。
  • 複雜的類型:包括 geo_point、geo_shape和completion。

在索引中創建映射

我們在創建索引的時候可以同時創建映射,就如同上一節的內容。也可以在索引創建好以後,再去創建映射,請求的方式如下:

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字段。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章