ElasticSearch 概述

HuDu發表於2020-09-28

之前的搜尋時基於SQL:通過like %xx%來進行模糊查詢,如果是大資料,就十分慢
ElasticEearch:搜尋!(百度、github、淘寶電商)

ElasticSearch和Solr都是基於Lucene進行封裝的,Lucene是一套資訊檢索工具包,jar包,不包含搜尋系統!
包含的:索引結構!讀寫索引的工具!排序,搜尋規則...工具類

Lucene和ElasticSearch的關係:
ElasticSearch是基於Lucene做了一些分裝和增強(上手十分簡單)

ElasticSearch

Elaticsearch,簡稱為es,es是一個開源的高擴充套件的分散式全文檢索引擎,它可以近乎實時的儲存、檢索資料;本身擴充套件性很好,可以擴充套件到上百臺伺服器,處理PB級別的資料。es也使用Java開發並使用Lucene作為其核心來實現所有索引和搜尋的功能,但是它的目的是通過簡單的RESTful API來隱藏Lucene的複雜性,從而讓全文搜尋變得簡單。
據國際權威的資料庫產品評測機構DB Engines的統計,在20161月,ElasticSearch已超過Solr等,成為排名第一的搜尋引擎類應用。

誰在使用

1、維基百科,類似百度百科,全文檢索,高亮,搜尋推薦/2(權重,百度!)

2、The Guardian(國外新聞網站),類似搜狐新聞,使用者行為日誌(點選,瀏覽,收藏,評論)+社交網路資料(對某某新聞的相關看法),資料分析,給到每篇新聞文章的作者,讓他知道他的文章的公眾反饋(好,壞,熱門,垃圾,鄙視,崇拜)

3、Stack Overflow(國外的程式異常討論論壇),IT問題,程式的報錯,提交上去,有人會跟你討論和回答,全文檢索,搜尋相關問題和答案,程式報錯了,就會將報錯資訊貼上到裡面去,搜尋有沒有對應的答案

4、GitHub(開原始碼管理),搜尋上千億行程式碼

5、電商網站,檢索商品高露潔牙膏的家庭套裝低於50塊錢,就通知我,我就去買領,開一個新商場。ES執行資料分析和挖掘,Kibana進行資料視覺化的一個使用場景)

6、日誌資料分析,logstash採集日誌,ES進行復雜的資料分析,正LK技術,elasticsearch+logstash+kibana

7、商品價格監控網站,使用者設定某商品的價格閾值,當低於該閾值的時候,傳送通知訊息給使用者,比如說訂閱牙膏的監控,如果高露潔牙膏的家庭套裝低於50塊錢,就通知我,我就去買

8BI系統,商業智慧,Business Intelligence。比如說有個大型商場集團,Bl,分析一下某某區域最近3年的使用者消費金額的趨勢以及使用者群體的組成構成,產出相關的數張報表,**區,最近3年,每年消費金額呈現100%的增長,而且使用者群體85%是高階白領,開一個新商場。ES執行資料分析和挖掘,Kibana進行資料視覺化

9、國內∶站內搜尋(電商,招聘,門戶,等等),IT系統搜尋(OACRMERP,等等),資料分析(ES熱門的一個使用場景)

ES和solr的差別

Elasticsearch簡介

Elasticsearch是一個實時分散式搜尋和分析引擎。它讓你以前所未有的速度處理大資料成為可能。

它用於全文搜尋、結構化搜尋、分析以及將這三者混合使用∶
維基百科使用Elasticsearch提供全文搜尋並高亮關鍵字,以及輸入實時搜尋(search-asyou-type)和搜尋糾錯(did-you-mean)等搜尋建議功能。

英國衛報使用Elasticsearch結合使用者日誌和社交網路資料提供給他們的編輯以實時的反饋,以便及時瞭解公眾對新發表的文章的回應。

StackOverflow結合全文搜尋與地理位置查詢,以及more-like-this功能來找到相關的問題和答案。
Github使用Elasticsearch檢索1300億行的程式碼。

但是Elasticsearch不僅用於大型企業,它還讓像DataDog以及Klout這樣的創業公司將最初的想法變成可擴充套件的解決方案。

Elasticsearch可以在你的筆記本上執行,也可以在數以百計的伺服器上處理PB級別的資料。
Elasticsearch是一個基於Apache Lucene(TM)的開源搜尋引擎。無論在開源還是專有領域,Lucene可以被認為是迄今為止最先進、效能最好的、功能最全的搜尋引擎庫。

但是,Lucene只是一個庫。想要使用它,你必須使用ava來作為開發語言並將其直接整合到你的應用中,更糟糕的是,Lucene非常複雜,你需要深入瞭解檢索的相關知識來理解它是如何工作的。

Elasticsearch也使用ava開發並使用Lucene作為其核心來實現所有索引和搜尋的功能,但是它的目的是通過簡單的RESTful API來隱藏Lucene的複雜性,從而讓全文搜尋變得簡單。

Solor簡介

Solr是Apache下的一個頂級開源專案,採用ava開發,它是基於Lucene的全文搜尋伺服器。Solr提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴充套件,並對索引、搜尋效能進行了優化

Solr可以獨立執行,執行在letty、Tomcat等這些Servlet容器中,Solr索引的實現方法很簡單,用POST方法向Solr伺服器傳送一個描述Field及其內容的XML文件,Solr根據xml文件新增、刪除、更新索引。Solr搜尋只需要傳送HTTP GET請求,然後對Solr返回Xml、json等格式的查詢結果進行解析,組織頁面佈局。Solr不提供構建UI的功能,Solr提供了一個管理介面,通過管理介面可以查詢Solr的配置和執行情況。

solr是基於lucene開發企業級搜尋伺服器,實際上就是封裝了lucene。

Solr是一個獨立的企業級搜尋應用伺服器,它對外提供類似於Web-service的API介面。使用者可以通過http請求,向搜尋引擎提交一定格式的檔案,生成索引;也可以通過提出查詢請求,並得到返回結果。

ElasticSearch vs Solr總結

1、es基本是開箱即用(解壓就可以用),非常簡單。Solr安裝略微複雜一丟丟!

2、Solr利用Zookeeper進行分散式管理,而Elasticsearch自身帶有分散式協調管理功能。

3、Solr支援更多格式的資料,比如JSONXMLCSV,而Elasticsearch僅支援json檔案格式。

4、Solr官方提供的功能更多,而Elasticsearch本身更注重於核心功能,高階功能多有第三方外掛提供,例如圖形化介面需要kibana友好支撐

5、Solr查詢快,但更新索引時慢(即插入刪除慢),用於電商等查詢多的應用;
·ES建立索引快(即查詢慢),即實時性查詢快,用於facebook新浪等搜尋。
.Solr是傳統搜尋應用的有力解決方案,但Elasticsearch更適用於新興的實時搜尋應用。

6、Solr比較成熟,有一個更大,更成熟的使用者、開發和貢獻者社群,而Elasticsearch相對開發維護者較少,更新太快,學習使用

ElasticSearch安裝

JDK1.8,最低要求!
Java開發,ElasticSearch 的版本和我們之後對應的Java的核心jar包!版本對應!JDK環境是正常!

下載

官網:www.elastic.co/cn/elasticsearch/

windows 下的安裝

1、解壓就可以使用

ElasticSearch 概述

2、熟悉目錄

bin    啟動檔案
config    配置檔案
    log4j2    日誌配置檔案
    jvm.options    java虛擬機器相關配置
    elasticsearch.yml    es配置檔案,預設9200埠,跨域
lib    相關jar包
logs    日誌檔案
modules    功能模組
plugins    外掛!ik分詞器

3、啟動
點選bin目錄下的elasticsearch.bat啟動,我們訪問http://127.0.0.1:9200/會得到一串json字串

ElasticSearch 概述

ElasticSearch 概述

安裝視覺化介面

前置條件是安裝了npm和nodejs
1、下載地址:github.com/mobz/elasticsearch-head
2、啟動前端vue專案

npm install
npm run start
open http://localhost:9100/

3、連線測試發現,存在跨域問題:配置es

http.cors.enabled: true
http.cors.allow-origin: "*"

4、重啟es伺服器,然後再次連線

ElasticSearch 概述

這個head我們就把它當作資料展示工具!我們後面所有的查詢使用Kibana

本作品採用《CC 協議》,轉載必須註明作者和本文連結