ElasticSerach基礎(chǔ)概念知識梳理
ES概念介紹
Elaticsearch,簡稱為ES, ES是一個開源的高擴展的分布式全文搜索引擎,是整個Elastic Stack技術(shù)棧的核心。它可以近乎實時的存儲、檢索數(shù)據(jù);本身擴展性很好,可以擴展到上百臺服務(wù)器,處理PB級別的數(shù)據(jù)。
1、ES核心概念組成
● 索引 index:一個索引相當(dāng)于一個關(guān)系數(shù)據(jù)庫的數(shù)據(jù)庫。
● 類型 type:一種type相當(dāng)于關(guān)系數(shù)據(jù)庫的一類數(shù)據(jù)表,在ES 7.x默認(rèn)type為_doc。
ES 5.x中一個索引(index)可以有多種type。
ES 6.x中一個索引(index)只能有一種type。
ES 7.x版本以后,將逐步淡化type這個概念,現(xiàn)在的操作已經(jīng)不再使用,默認(rèn)_doc。
● 映射 mapping:mapping定義了每個字段的類型、字段所使用的分詞器信息。相當(dāng)于關(guān)系型數(shù)據(jù)庫中的表結(jié)構(gòu)。
● 文檔 document:一個document相當(dāng)于關(guān)系型數(shù)據(jù)庫中數(shù)據(jù)表的一行記錄。
● 倒排索引:一個倒排索引由文檔中所有不重復(fù)詞的列表構(gòu)成,對于其中每個詞都有包含它的文檔id列表。
● 字段 field:相當(dāng)于關(guān)系型數(shù)據(jù)庫表的字段名稱。
2、ES數(shù)據(jù)類型介紹
(1)字符串型
text:用于全文索引,該類型的字段將通過分詞器 進(jìn)行分詞。
keyword:不進(jìn)行分詞,只能搜索該字段的完整的值。
(2)數(shù)值型
long, integer, short, byte, double, float, half_float, scaled_float。
(3)布爾型 boolean
boolean JSON 中的 “true”、“false”、true、false 都可以.
(4)二進(jìn)制類型 binary
該類型的字段把值當(dāng)做經(jīng)過 base64 編碼的字符串,默認(rèn)不存儲,且不可搜索。
(5)范圍類型
范圍類型表示值是一個范圍,而不是一個具體的值。
integer_range, float_range, long_range, double_range, date_range
比如:age 的類型是 integer_range,如果存儲的值是 {"gte" : 18, "lte" : 90};搜索 "term" : {"age": 60} 可以查詢到該值。
(6)日期型 date
因為Json沒有date類型,所以es通過識別字符串是否符合format定義的格式來判斷是否滿足date類型。
format默認(rèn)為:strict_date_optional_time||epoch_millis。
"2023-01-31" "2023/01/31 12:10:30" 類似這種字符串格式。
(7)復(fù)雜數(shù)據(jù)類型
● 數(shù)組:[ ] Nested: nested (數(shù)組類型的JSON對象)。
比如:[ { "name": "小張", "age": 30 }, { "name": "小李", "age": 35 }]。
● 對象:{ } Object: object(單個JSON對象)。
比如:{ "name": "小李", "age": 35 }。