大白話告訴你Elasticsearch到底是幹嘛的?

一、什麼是搜索

通俗來講就是在任何場景下你通過輸入你想要搜索的內容,然後就期望找到相關度與之匹配的。
比如:

  • 百度、Google等搜索引擎
  • 站內搜索(垂直搜索):淘寶等電商網站/app、招聘網站、新聞網站等

二、檢索方式

1、數據庫

在這裏插入圖片描述

2、倒排索引

知道了數據庫方式的缺點後再來看Elasticsearch所採取的倒排索引方式。
在這裏插入圖片描述

其實倒排索引本質上是一種數據結構,而不是我上面畫的表格,我這裏是爲了容易理解,就採取了表格代理。這種方式原理上比較好理解。倒排索引後面會出專題來說明。

三、什麼是Elasticsearch

先說下lucene,lucene就是一個jar包,裏面封裝好了一些複雜的API以及包含了倒排索引,數據存儲到磁盤。也就是說lucene是一種採取了倒排索引的方式進行高效率搜索的框架。但是它api複雜,且不支持集羣。而Elasticsearch完美解決了lucene的這些缺點,它天然支持集羣,api相對簡單,開箱即用。底層還是封裝的lucene。

四、Elasticsearch能幹嘛

  • 分佈式搜索引擎和數據分析引擎

搜索引擎:百度、Google、電商網站等
數據分析引擎:用戶行爲埋點,常用於大數據分析?你沒發現你在某寶或某東搜個東西,後面都給你推送這類的嗎?

  • 全文檢索、結構化搜索以及聚合

全文檢索:全部內容裏找包含的關鍵字:
SELECT * FROM table WHERE name LIKE “%小米%”;
結構化搜索:也稱等值匹配。
SELECT * FROM table WHERE name = “小米手機”;
聚合:比如我們分析每一個商品分類下有多少個商品。
SELECT category_id, COUNT(*) FROM table GROUP BY category_id;

  • 海量數據近實時處理

ES自動可以將海量數據分散到多臺服務器上去存儲和檢索,分佈式。
海量數據的處理:分佈式以後,就可以採用大量的服務器去存儲和檢索數據,自然而然就可以實現海量數據的
近實時:檢索個數據要花費好幾分鐘這就不叫近實時,ES可以在秒級別對數據進行搜索和分析。

五、Elasticsearch使用場景

  • 百度、維基百科、新聞、電商、Stack Overflow等
  • 各大網站的用戶行爲日誌(比如你搜個商品、你點擊某個連接等)
  • BI(Business Intelligence:商業智能),數據分析、挖掘
  • Github
  • ELK
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章