一、Elasticsearch介紹
Elasticsearch是(shi)一個分布(bu)式、可擴展(zhan)、近(jin)實(shi)時的(de)高(gao)性能搜索與數據分析(xi)引(yin)擎。
Elasticsearch的特點和優勢:
- 分布式實時文件存儲
- 實時分析的分布式搜索引擎,多分片多副本
- 高可擴展性,可擴展到上百臺服務器.
- 可插拔插件支持
1、數據搜索方式
數(shu)(shu)(shu)據類型:結構化(hua)數(shu)(shu)(shu)據和非(fei)結構化(hua)數(shu)(shu)(shu)據
搜索類型:結構化(hua)數(shu)據搜索和非(fei)結構化(hua)數(shu)據搜索
結構化數(shu)據搜索:順序掃描(miao)、關鍵詞(ci)精確匹配(pei)、關鍵詞(ci)部分匹配(pei)
非結構化數據搜索:順序(xu)掃(sao)描、全文檢索
全文(wen)檢索是(shi)一種(zhong)空(kong)間(jian)換時間(jian)的做(zuo)法---數(shu)據索引創建消耗時間(jian)和空(kong)間(jian)
2、倒排索引
詞條(tiao)(Term)、詞典(Term Direction)、倒排表(Post List)
詞(ci)條:是索引里面最小(xiao)的存儲(chu)和查(cha)詢單位,一般(ban)指一個單詞(ci)或中文中分詞(ci)后的詞(ci)組
詞典:是詞條的集合
倒排表:
文檔ID
詞頻TF,該單詞在文檔中出現的次數,用于相關性評分
位置position 單詞在文檔分詞中的位置,用于短語搜索(phrase query)
偏(pian)移(yi)(offset) 記錄單詞(ci)的開始結束位置,實現高亮顯(xian)示
指定某些字段不做索引:
優點:節省存儲空間
缺點:字段無法被搜(sou)索
二、基本概念
-
Node和Cluster
Elastic是一(yi)個(ge)(ge)(ge)分布式的(de),允許多(duo)臺服(fu)務(wu)器協同(tong)工作,每臺服(fu)務(wu)器可以運行多(duo)個(ge)(ge)(ge)Elastic實(shi)例。單個(ge)(ge)(ge)Elastic實(shi)例稱(cheng)為一(yi)個(ge)(ge)(ge)節(jie)點(dian)(node)。一(yi)組節(jie)點(dian)構成(cheng)一(yi)個(ge)(ge)(ge)集群(Cluster),集群由(you)具(ju)有相同(tong)cluster.name的(de)一(yi)個(ge)(ge)(ge)或多(duo)個(ge)(ge)(ge)節(jie)點(dian)組成(cheng)。節(jie)點(dian)的(de)狀態:Green、Yellow和Red三種狀態
-
Index
索引,ES存儲數據的地方,類似(si)于關系數據庫的Database。文(wen)檔的容器
-
Shards
索引分片, 是ES提供分布式搜索的基礎,其含義是為將一個完整的index分成若干個部分存儲在相同或者不同節點上,這些組成index的部分就叫做shard。當查詢的索引分布在多個分片時,ES會把查詢發送給每個相關的分片,并將結果組合起來,應用程序不知道分片的存在,這個過程對用戶來說是透明的。創建索引時需要指定分片的數量,并且分片的數量一旦確定就不能更改。除非reindex。一個分片就是一個運行的Lucene實例
分片設置過小,導致后續無法水平擴展,單分片數據量大,導致數據重新分配耗時
分(fen)(fen)片(pian)設(she)置過大,影(ying)響搜(sou)索(suo)結果(guo)的相關性(xing)打分(fen)(fen),影(ying)響統計結果(guo)的準確(que)性(xing),單個節點上分(fen)(fen)片(pian)過多,導致(zhi)資(zi)源浪費,影(ying)響性(xing)能。
-
Replicas
索(suo)引(yin)副(fu)(fu)本(ben)(ben),ES可(ke)(ke)以(yi)設置多(duo)個(ge)索(suo)引(yin)的副(fu)(fu)本(ben)(ben),副(fu)(fu)本(ben)(ben)的作用(yong)一是提高(gao)系統的容(rong)錯性,當某(mou)個(ge)節點或者某(mou)個(ge)分(fen)片損(sun)壞或者丟失時(shi)可(ke)(ke)以(yi)從副(fu)(fu)本(ben)(ben)中恢復(fu)。二是提供ES的查詢效率,ES會自(zi)動(dong)對搜索(suo)請求進行(xing)負載(zai)均衡。主分(fen)片不(bu)可(ke)(ke)用(yong)時(shi),會從備份中選(xuan)一個(ge)分(fen)片作為主分(fen)片,從而避免數據丟失。副(fu)(fu)本(ben)(ben)數量過多(duo),會導(dao)致(zhi)同步數據的性能損(sun)耗。
-
Recovery
數據恢復(fu)或者叫數據重(zhong)(zhong)新分布,ES在有節(jie)點加入(ru)或退出時會(hui)根據機器的負載對索(suo)引分片進行重(zhong)(zhong)新分配,掛掉的節(jie)點重(zhong)(zhong)新啟動時也會(hui)進行數據的恢復(fu)。
-
Gateway
ES索(suo)(suo)引快(kuai)照的(de)存(cun)儲方(fang)式,ES默認是先把索(suo)(suo)引存(cun)放在內存(cun)中,當(dang)內存(cun)滿了時再持久化到本地硬(ying)盤(pan)。gateway對(dui)索(suo)(suo)引快(kuai)照進行存(cun)儲,當(dang)這(zhe)個ES集群關(guan)閉再重(zhong)新(xin)啟動時就(jiu)會從(cong)gateway中讀取(qu)索(suo)(suo)引備份(fen)數據。
-
Discovery.zen
ES的(de)自動發現節點(dian)機制(zhi),ES是一個基(ji)于p2p的(de)系統,它先通(tong)過廣播尋找存在(zai)的(de)節點(dian),再通(tong)過多(duo)播協議(yi)來進(jin)行節點(dian)之間的(de)通(tong)信,同時(shi)支持(chi)點(dian)對點(dian)的(de)交互。
-
Document
Index里(li)面(mian)單條的記錄(lu)稱為Document(文檔)。許多條Document構成一個Index。Documnet使用JSON格(ge)式表示。每個文檔有一個UniqueID,可以自(zi)己指定或者(zhe)ES自(zi)動生成。
-
Setting
對集(ji)群中索(suo)引的定義信息(xi),比如(ru)分片(pian)數、副本數
-
Mapping
保存了定義索引(yin)中(zhong)字段的存儲類型、分詞方式、是否(fou)存儲等信息,字段信息一旦創(chuang)建就無(wu)法修改(gai),只能新加(jia)字段
-
Analyzer
默認的(de)標準Analyzer包含(han)一個標準的(de)Tokenizer和(he)三個Filter組成。即Standard Token Filter、Lower Case Token Filter和(he)Stop Token Filter