elasticsearch數據結構


無論是關系型數據庫還是非關系型數據庫,乃至elasticsearch這種事實上承擔着一定儲存作用的搜索引擎,數據類型都是非常重要而基礎的概念。本文基於elasticsearch 5.x版本。

 

核心數據類型(Core datatypes)

string

text:全文檢索需要分詞的類型。

keyword:精確值。合適分組排序。

Caused by: NotSerializableExceptionWrapper[: Fielddata is disabled on text fields by default. Set fielddata=true on [gid] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead.]; nested: IllegalArgumentException[Fielddata is disabled on text fields by default. Set fielddata=true on [gid] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead.];

以上異常就是由於對text類型的字段進行排序造成的。

 

數字類型 Numeric datatypes

long     帶符號的64位整數,最小值為-263,最大值為263-1。


integer  一個帶32位整數,最小值為-231,最大值為231-1。


short 


byte


double


float


half_float  半精度16位IEEE 754浮點數。


scaled_float  支持固定的縮放因子的浮點數。


對於數字類型,熟悉關系型數據庫的應該都不難理解 。其中,獨特的是half_float和scaled_float兩個類型。

官方的解釋:

double,float和half_float類型認為-0.0和+0.0是不同的值。因此,在-0.0上執行術語查詢將不匹配+0.0,反之亦然。對於范圍查詢也是如此:如果上限為-0.0,則+0.0將不匹配,如果下限為+0.0,則-0.0將不匹配。

對於浮點類型,使用縮放因子將浮點數據存儲到整數中通常更為有效,這是縮放縮放類型在引擎蓋下執行的。比如價格,12.34元,縮放因子為100,那么存儲為1234。這是一個整數。這大大有助於節省磁盤空間,因為整數比浮點更容易壓縮。Date datatype

日期類型 Date datatype

date

JSON中沒有日期類型,所以在ELasticsearch中,日期類型可以是以下幾種:

日期格式的字符串:e.g. “2015-01-01” or “2015/01/01 12:10:30”.

long類型的毫秒數( milliseconds-since-the-epoch)

integer的秒數(seconds-since-the-epoch)

日期格式可以自定義,如果沒有自定義,默認格式如下:

"strict_date_optional_time||epoch_millis"

布爾類型 Boolean datatype

boolean

true和false。但也可以接受自定義值。

范圍類型 Range datatypes

integer_range

float_range

long_range

double_range

date_range

ip_range

這個類型的字段可以通過兩個字段來界定上下范圍。

復雜數據類型 Complex datatypes

數組類型 Array datatype

數組: ["one","two"],[1,2]

嵌套數組: [1, [2,3]] 相當於 [1,2,3]

對象數組: [{ "name": "Mary", "age": 12 },{ "name": "John", "age": 10 }]

動態添加字段時,數組中的第一個值決定字段類型。所有后續值必須是相同的數據類型,或至少可以將后續值強制轉換為相同的數據類型。

不支持使用數據類型混合的數組:[10,“some string”]

數組可能包含空值,它們被配置的null_value替換或完全跳過。空數組[]被視為缺少的字段 - 沒有值的字段。

 

對象類型 Object datatype

包含一個json對象。其中可以有個子節點。子節點可以是json對象。


 

在內部,該文檔被索引為一個簡單的,平均的鍵值對列表,如下所示:


 

真正儲存如下:


 

嵌套對象類型 Nested datatype

同對象類型,不過它可以是一個json數組。

地理數據類型

經緯度類型 Geo-point datatype

 

復雜形狀數據類型 Geo-Shape datatype

geo_shape數據類型便於對任意地理形狀進行索引和搜索,如矩形和多邊形。當被索引的數據或執行的查詢包含除了點之外的形狀時,應該使用它。

您可以使用geo_shape Query查詢使用此類型的文檔。

專門數據類型 Specialised datatypes

IP類型 IP datatype

略。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM