ElasticSerach基礎概念知識梳理
ES概念介紹
Elaticsearch,簡稱為ES, ES是一個開源的高擴展的分布式全文搜索引擎,是整個Elastic Stack技術棧的核心。它可以近乎實時的存儲、檢索數據;本身擴展性很好,可以擴展到上百臺服務器,處理PB級別的數據。
1、ES核心概念組成
● 索引 index:一個索引相當于一個關系數據庫的數據庫。
● 類型 type:一種type相當于關系數據庫的一類數據表,在ES 7.x默認type為_doc。
ES 5.x中一個索引(index)可以有多種type。
ES 6.x中一個索引(index)只能有一種type。
ES 7.x版本以后,將逐步淡化type這個概念,現在的操作已經不再使用,默認_doc。
● 映射 mapping:mapping定義了每個字段的類型、字段所使用的分詞器信息。相當于關系型數據庫中的表結構。
● 文檔 document:一個document相當于關系型數據庫中數據表的一行記錄。
● 倒排索引:一個倒排索引由文檔中所有不重復詞的列表構成,對于其中每個詞都有包含它的文檔id列表。
● 字段 field:相當于關系型數據庫表的字段名稱。
2、ES數據類型介紹
(1)字符串型
text:用于全文索引,該類型的字段將通過分詞器 進行分詞。
keyword:不進行分詞,只能搜索該字段的完整的值。
(2)數值型
long, integer, short, byte, double, float, half_float, scaled_float。
(3)布爾型 boolean
boolean JSON 中的 “true”、“false”、true、false 都可以.
(4)二進制類型 binary
該類型的字段把值當做經過 base64 編碼的字符串,默認不存儲,且不可搜索。
(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默認為:strict_date_optional_time||epoch_millis。
"2023-01-31" "2023/01/31 12:10:30" 類似這種字符串格式。
(7)復雜數據類型
● 數組:[ ] Nested: nested (數組類型的JSON對象)。
比如:[ { "name": "小張", "age": 30 }, { "name": "小李", "age": 35 }]。
● 對象:{ } Object: object(單個JSON對象)。
比如:{ "name": "小李", "age": 35 }。