Elasticsearch 數據類型

摘要

Elasticsearch 支持大量的數據類型。
支持參數,會單獨成章,可以查看,暫時未完成。

text datatype 文本數據類型

用於全文搜索的字段,例如電子郵件的正文或產品的描述。這些字段是可分析的,也就是說,它們通過分析器分析,以便 在被索引之前將字符串轉換爲單個術語的列表。通過分析過程,Elasticsearch 可以在每個全文字段中搜索單個單詞。文本字段不用於排序,很少用於聚合。

接受參數: analyzer,boost,eager_global_ordinals,fielddata,fielddata_frequency_filter,fields,index,index_options,index_prefixes,index_phrases,norms,position_increment_gap,store,search_analyzer,search_quote_analyzer,similarity,term_vector,meta

keyword datatype 關鍵字數據類型

用於索引結構化內容(例如ID,電子郵件地址,主機名,狀態代碼,郵政編碼或標籤)的字段。它們通常用於過濾、排序、聚合。關鍵字字段只按照其確切值進行搜索。

接受參數
analyzer,boost,eager_global_ordinals,fielddata,fielddata_frequency_filter,fields,index,index_options,index_prefixes,index_phrases,norms,position_increment_gap,store,search_analyzer,search_quote_analyzer,similarity,term_vector,meta

Numeric 數字

整數類型,佔用內存最小,有助於索引和搜索更加有效。但請注意,存儲是根據實際值進行優化的,因此選擇一種類型而不是另一種類型不會影響存儲需求
對於浮點類型,使用縮放因子將浮點數存儲爲整數通常會更加有效,scaled_float類型會自動在後臺執行此操作。這對於節省磁盤空間很有幫助,因爲整數比浮點數更容易壓縮。
支持類型,根據需要選擇類型
long,integer,short,byte,double,float,half_float,scaled_float

接受參數
coerce,boost,doc_values,ignore_malformed,index,null_value,store,meta

Date 日期

支持類型
date

接受參數
boost,doc_values,format,locale,ignore_malformed,index,null_value,store,meta

請求示例

PUT my_index
{
  "mappings": {
    "properties": {
      "date": {
        "type": "date"
        /*可以指定日期格式*/
       /*, "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"*/ 
      }
    }
  }
}

PUT my_index/_doc/1
{ "date": "2015-01-01" } 

PUT my_index/_doc/2
{ "date": "2015-01-01T12:10:30Z" } 

PUT my_index/_doc/3
{ "date": 1420070400001 } 

GET my_index/_search
{
  "sort": { "date": "asc"} 
}

Date nanoseconds

該數據類型是該數據類型的補充date。但是,兩者之間有重要區別。現有date數據類型以毫秒爲單位存儲日期。該date_nanos數據類型存儲在納秒的分辨率,這限制了它的範圍內的日期從大約1970至2262年,爲日期仍然作爲從epoch長表示納秒存儲日期

支持類型
date_nanos

boolean 布爾類型

布爾字段接受JSON true和false值,但也可以接受解釋爲true或false的字符串:

支持類型
boolean

接受參數
boost,doc_values,index,null_value,store,meta

Binary 二進制

該binary類型接受二進制值作爲 Base64編碼的字符串。該字段默認情況下不存儲,並且不可搜索

接受參數
doc_values,store

請求示例

PUT my_index
{
  "mappings": {
    "properties": {
      "name": {
        "type": "text"
      },
      "blob": {
        "type": "binary"
      }
    }
  }
}

PUT my_index/_doc/1
{
  "name": "Some binary blob",
  "blob": "U29tZSBiaW5hcnkgYmxvYg==" 
}

Range

支持類型
integer_range,float_range,long_range,double_range,date_range,ip_range,

接受參數
coerce,boost,index,store

請求示例

PUT range_index
{
  "settings": {
    "number_of_shards": 2
  },
  "mappings": {
    "properties": {
      "expected_attendees": {
        "type": "integer_range"
      },
      "time_frame": {
        "type": "date_range", 
        "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
      }
    }
  }
}

PUT range_index/_doc/1?refresh
{
  "expected_attendees" : { 
    "gte" : 10,
    "lte" : 20
  },
  "time_frame" : { 
    "gte" : "2015-10-31 12:00:00", 
    "lte" : "2015-11-01"
  }
}

Object datatype 對象數據類型

JSON文檔本質上是分層的:文檔可能包含內部對象,而內部對象又可能包含內部對象本身

接受參數
dynamicenabledproperties

Nested datatype 嵌套數據類型

nested類型是object數據類型的專用版本,它允許以可以彼此獨立地查詢對象的方式對對象數組進行索引。
當數據類型嵌套

詳情請看

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