之前的搜尋時基於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的統計,在2016年1月,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塊錢,就通知我,我就去買
8、BI系統,商業智慧,Business Intelligence。比如說有個大型商場集團,Bl,分析一下某某區域最近3年的使用者消費金額的趨勢以及使用者群體的組成構成,產出相關的數張報表,**區,最近3年,每年消費金額呈現100%的增長,而且使用者群體85%是高階白領,開一個新商場。ES執行資料分析和挖掘,Kibana進行資料視覺化
9、國內∶站內搜尋(電商,招聘,門戶,等等),IT系統搜尋(OA,CRM,ERP,等等),資料分析(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支援更多格式的資料,比如JSON、XML、CSV,而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、解壓就可以使用
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字串
安裝視覺化介面
前置條件是安裝了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伺服器,然後再次連線
這個head我們就把它當作資料展示工具!我們後面所有的查詢使用Kibana
本作品採用《CC 協議》,轉載必須註明作者和本文連結