Elasticsearch核心概念和原理

搜索功能

使用傳統(tǒng)關(guān)系型數(shù)據(jù)庫做搜索存在:性能差(模糊查詢可能會(huì)索引失效)、不可靠、結(jié)果不準(zhǔn)確(相關(guān)度低)等問題,為解決這類問題,可以使用ES來處理搜索請(qǐng)求。ES的核心是倒排索引

倒排索引 數(shù)據(jù)結(jié)構(gòu)

  1. 包含這個(gè)關(guān)鍵詞的document list
  2. 關(guān)鍵詞在每個(gè)doc中出現(xiàn)的次數(shù)(詞頻) TF(term frequency)
  3. 關(guān)鍵詞在整個(gè)索引中出現(xiàn)的次數(shù) IDF (inverse doc frequency)
  4. 關(guān)鍵詞在當(dāng)前doc中出現(xiàn)的次數(shù)
  5. 每個(gè)doc的長度,越長相關(guān)度越低
  6. 包含這個(gè)關(guān)鍵詞的所有doc的平均長度

Lucene

Lucene是一個(gè)jar包,幫我們創(chuàng)建倒排索引,提供復(fù)雜的API。Lucene是單點(diǎn)的,擴(kuò)展相對(duì)復(fù)雜。

Elasticsearch

  • 基于Lucene開發(fā)的分布式的搜索,存儲(chǔ)和數(shù)據(jù)分析引擎
  • 優(yōu)點(diǎn):
    1. 面向開發(fā)者友好,屏蔽了Lucene的復(fù)雜性,集群自動(dòng)發(fā)現(xiàn)
    2. 自動(dòng)維護(hù)數(shù)據(jù)在多個(gè)節(jié)點(diǎn)上的建立
    3. 請(qǐng)求負(fù)載均衡
    4. 自動(dòng)維護(hù)冗余副本,部分節(jié)點(diǎn)宕機(jī)數(shù)據(jù)不會(huì)丟失
    5. 提供高級(jí)功能,符合查詢,聚合分析,基于地理位置等
    6. 開箱即用,也可構(gòu)建大型分布式集群,處理PB級(jí)數(shù)據(jù)
    7. 提供全文檢索,同義詞處理,相關(guān)度排名,海量數(shù)據(jù)近實(shí)時(shí)處理
  • 應(yīng)用領(lǐng)域
    1. 百度(全文檢索,高亮,搜索推薦)
    2.用戶行為日志(用戶點(diǎn)擊、瀏覽、收藏、評(píng)論)
    3. BI (business intelligence)商業(yè)智能,數(shù)據(jù)挖掘統(tǒng)計(jì)
    4. ELK (Elasticsearch 數(shù)據(jù)存儲(chǔ) + Logstash 日志采集 + Kibana 可視化)

ES核心概念

  1. Cluster(集群):每個(gè)集群至少包含兩個(gè)節(jié)點(diǎn)
  2. Node(節(jié)點(diǎn)):集群中的每個(gè)節(jié)點(diǎn),一個(gè)節(jié)點(diǎn)不代表一臺(tái)服務(wù)器
  3. Field(字段): 一個(gè)數(shù)據(jù)字段,與index和type一起,可以定位一個(gè)doc
  4. Document (文檔):ES最小的數(shù)據(jù)單元 是json格式
  5. Type:邏輯上的數(shù)據(jù)分類,es 7.x中刪除了type的概念
  6. Index:一類相同或者類似的doc,比如一個(gè)員工索引,商品索引

Shard分片:

  1. 一個(gè)index包含多個(gè)Shard,默認(rèn)5個(gè)Primay,默認(rèn)每個(gè)Primay分配一個(gè)Replica,Primay的數(shù)量在創(chuàng)建索引的時(shí)候設(shè)置,如果想修改,需要重建索引。
  2. 每個(gè)Shard都是一個(gè)Lucene實(shí)例,有完整的創(chuàng)建索引的處理請(qǐng)求能力。
  3. ES會(huì)自動(dòng)在nodes上為我們做shard 均衡。
  4. 一個(gè)doc是不可能同時(shí)存在于多個(gè)PShard中的,但是可以存在于多個(gè)RShard中。
  5. Primay和對(duì)應(yīng)的Replica不能同時(shí)存在于同一個(gè)節(jié)點(diǎn),所以最低的可用配置是兩個(gè)節(jié)點(diǎn),互為主備。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容