ElasticSearch學習日誌——瞭解ElasticSearch

ElasticSearch是什麼?

  • 是一個基於Luence全文搜索引擎,基於RESTful web接口
  • ElasticSearch 是一個分佈式高擴展高實時搜索數據分析引擎

瞭解Luence

Lucene是一套用於全文檢索和搜尋的開源程序庫。其主要目的就是解決全文搜索

那麼全文搜索能有什麼問題?
那我們先看看搜索

搜索

搜索:把數據找出來。對數據進行搜索,那就不得不提數據分類。

數據的分類

結構化數據:具有固定格式或者固定長度的數據。對於結構化數據我們一般都是存儲在關係型數據庫table中;那麼對於結構化數據搜索,一般是建立索引,通過B-tree等數據結構快速搜索。
非結構化數據: 指沒有固定格式不定長的數據。如文章。那麼對於非結構化數據我們怎麼進行搜索呢?主要有兩種方法:順序掃描法,全文搜索法

順序掃描

順序掃描:從頭到尾掃描 一邊,標記要搜索的關鍵詞;這樣的方法無疑效率是很低的。

全文搜索

全文搜索:掃描非結構化數據,對每一個詞建立一個索引,根據建立的索引進行查找,並將查找的結果反饋給用戶。

那麼問題來了,Luence是怎麼實現全文搜索的。

Luence是怎麼實現全文搜索

在這裏插入圖片描述
全文搜索基本上分爲兩個步驟:創建索引搜索索引
(1~4)索引過程

  1. 有一個待索引文件
  2. 待索引文件經過詞法分析和語言處理後形成一系列詞(Term)
  3. 列詞經過索引創建形成詞典和反向索引表
  4. 通過索引存儲將索引存入硬盤

(a-g)搜索過程
a. 用戶輸入查詢語句
b. 查詢語句經過詞法分析和語言處理得到一系列詞(Term)
c. 一系列詞(Term)經過語法分析後得到一個查詢樹
d. 索引存儲將索引讀入內存
e. 利用查詢樹搜索索引,從而得到每個詞(Term)的文檔鏈表,對文檔鏈表進行交,差,並得到結果文檔
f.將搜索到的結果文檔對查詢的相關性進行排序
g. 返回查詢結果給用戶

更深一步的知識,以後我再深入學習

應用場景

  • 全文搜索
  • ELK記錄和日誌分析
  • 數據可視化:Kibana

ElasticSearch核⼼概念

索引(index):相當於mysql的數據庫
類型(type) :相當於mysql的table,ES 7.x以後已經移除type這個概念。
⽂檔(document):相當於mysql行數據
映射(mapping):mapping定義了每個字段的類型等信息。相當於mysql中的表結構。
字段(field):相當於mysql表的字段
集羣(cluster):集羣由⼀個或多個節點組成,⼀個集羣有⼀個默認名稱"elasticsearch"。
節點(node): 集羣的節點,⼀臺機器或者⼀個進程
分⽚和副本(shard):分⽚有主分⽚(primary Shard)和副本分⽚(replica Shard)之分。副本是分⽚的副本,⼀個Index數據在物理上被分佈在多個主分⽚中,每個主分⽚只存放部分數據,每個主分⽚可以有多個副本,叫副本分⽚,是主分⽚的複製

ElasticSearch高擴展

Elasticsearch 向外擴展

ElasticSearch高實時

ElasticSearch近實時搜索的實現https://blog.csdn.net/dc_726/article/details/94252850

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章