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文檔本質上是分層的:文檔可能包含內部對象,而內部對象又可能包含內部對象本身
接受參數
dynamic
,enabled
,properties
Nested datatype 嵌套數據類型
該nested
類型是object
數據類型的專用版本,它允許以可以彼此獨立地查詢對象的方式對對象數組進行索引。
當數據類型嵌套