elasticsearch摸石頭過河——常用資料型別(二)
elasticsearch資料型別
Elasticsearch 型別是 以 Lucene 處理文件的這個方式為基礎來實現的。一個索引可以有多個型別,這些型別的文件可以儲存在相同的索引中。
Lucene 沒有文件型別的概念,每個文件的型別名被儲存在一個叫 _type
的元資料欄位上。 當我們要檢索某個型別的文件時, Elasticsearch 通過在 _type
欄位上使用過濾器限制只返回這個型別的文件。
注意問題:不同type中,有兩個相同的欄位名稱,這時欄位型別必須是相同的,否則會報錯!
一,字串型別
ElasticSearch 5.0之後,除去了字串string型別,增加了:
text
(全文搜尋) 老版本:string—>index(analyzed)
keyword(關鍵詞搜尋) 老版本:string—>index(not_analyzed)
默認同時滿足keyword與text型別,如果做聚合或者排序,可在欄位新增keyword,做關鍵詞搜尋(long.keyword)
二,數值型別
long,int,short,byte,double,float
三,日期型別(UTC時間) 1970年1月1日0時0分0秒就是UNIX時間0。
{ “date”: “2015-01-01” }
{ “date”: “2015-01-01T12:10:30Z” }
{ “date”: 1420070400001 }
ElasticSearch 內部會將日期資料轉換為UTC,並存儲為milliseconds-since-the-epoch的long型整數。
四,布林型別
布林欄位接受JSON true和false值,
但也可以接受被解釋為true或false的字串和數字:
false值舉例:
false,“false”,“off”,“no”,“0”,“”(空字串),0,0.0
true值舉例:
以上false示例的反面,一切非假值。
五,二進位制型別
二進位制型別接受二進位制值作為Base64編碼字串,該欄位預設不儲存,不可搜尋(意思就是隻在source欄位中儲存整個 文件,不會單獨當成列儲存)
六,範圍資料型別
integer_range :整型範圍型別;
float_range :單精度浮點範圍型別;
long_range :長整型範圍型別;
double_range :雙精度範圍型別;
date_range :時間範圍型別;
ip_range :IP範圍型別。
使用場景:比如前端的時間選擇表單、年齡範圍選擇表單等。
七,物件型別
類似json物件
八,陣列型別
必須保持型別相同