ElasticSearch7.4的數據類型,Mapping Type, 指定索引Document的Mapping Type

ElasticSearch7.4的數據類型,Mapping Type, 指定索引Document的Mapping Type

基礎數據類型:(ELasticsearch 5.X之後的字段類型不再支持string,由text或keyword取代)

    一、字符串

        1.1 文本類型 text
          當一個字段需要用於全文搜索(會被分詞), 比如產品名稱、產品描述信息, 就應該使用text類型.
            text的內容會被分詞, 可以設置是否需要存儲: "index": "true|false".
            text類型的字段不能用於排序, 也很少用於聚合.
        1.2 關鍵字類型 keyword
           當一個字段需要按照精確值進行過濾、排序、聚合等操作時, 就應該使用keyword類型.
              keyword的內容不會被分詞, 可以設置是否需要存儲: "index": "true|false".

    二、數字類型:

      byte  有符號的8位整數, 範圍: [-128 ~ 127]
      short 有符號的16位整數, 範圍: [-32768 ~ 32767]
      integer 有符號的32位整數, 範圍: [$-2^{31}$ ~ $2^{31}$-1]
      long  有符號的32位整數, 範圍: [$-2^{63}$ ~ $2^{63}$-1]
      float 32位單精度浮點數
      double  64位雙精度浮點數
      half_float  16位半精度IEEE 754浮點類型
      scaled_float  縮放類型的的浮點數, 比如price字段只需精確到分, 57.34縮放因子爲100, 存儲結果爲5734
        儘可能選擇範圍小的數據類型, 字段的長度越短, 索引和搜索的效率越高;
        優先考慮使用帶縮放因子的浮點類型.

    三、日期類型 - date

      JSON沒有日期數據類型, 所以在ES中, 日期可以是:
      包含格式化日期的字符串, "2018-10-01", 或"2018/10/01 12:10:30".
      代表時間毫秒數的長整型數字.
      代表時間秒數的整數.
      如果時區未指定, 日期將被轉換爲UTC格式, 但存儲的卻是長整型的毫秒值.
      可以自定義日期格式, 若未指定, 則使用默認格式: strict_date_optional_time||epoch_millis

    四、布爾類型
      真值: true, "true", "on", "yes", "1"...
      假值: false, "false", "off", "no", "0", ""(空字符串), 0.0, 0

    五、二進制類型
      二進制類型是Base64編碼字符串的二進制值, 不以默認的方式存儲, 且不能被搜索. 有2個設置項:

      (1) doc_values: 該字段是否需要存儲到磁盤上, 方便以後用來排序、聚合或腳本查詢. 接受true和false(默認);

      (2) store: 該字段的值是否要和_source分開存儲、檢索, 意思是除了_source中, 是否要單獨再存儲一份. 接受true或false(默認).
    六、範圍類型:
      range類型支持以下幾種:

      類型  範圍
      integer_range $-2^{31}$ ~ $2^{31}-1$
      long_range  $-2^{63}$ ~ $2^{63}-1$
      float_range 32位單精度浮點型
      double_range  64位雙精度浮點型
      date_range  64位整數, 毫秒計時
      ip_range  IP值的範圍, 支持IPV4和IPV6, 或者這兩種同時存在

複合數據類型
  
    一、數組類型

    二、對象類型

    三、嵌套類型 nested

地理數據類型
   一、地理點類型 - geo point
   二、地理形狀類型 - geo_shape

專業領域數據類型
  IP類型
  計數數據類型 - token_count


創建指定Mapping type的索引庫 (一個Mapping Type包括兩部分,Meta-fields、Fields or properties)
PUT /my-index
  {
    "mappings": {
      "properties": {
        "age":    { "type": "integer" },  
        "email":  { "type": "keyword"  }, 
        "name":   { "type": "text"  }     
      }
    }
  }

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