ElasticSearch和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只是一個庫。想要使用它,你必須使用Java來作爲開發語言並將其直接集成到你的應用中,更糟糕的是,Lucene非常複雜,你需要深入瞭解檢索的相關知識來理解它是如何工作的。
Elasticsearch也使用Java開發並使用Lucene作爲其核心來實現所有索引和搜索的功能,但是它的目的是通過簡單的 RESTful API 來隱藏Lucene的複雜性,從而讓全文搜索變得簡單。

Solr簡介

Solr 是Apache下的一個頂級開源項目,採用Java開發,它是基於Lucene的全文搜索服務器。Solr提供了比Lucene更爲豐富的查詢語言,同時實現了可配置、可擴展,並對索引、搜索性能進行了優化

Solr可以獨立運行,運行在Jetty、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請求,向搜索引擎服務器提交一定格式的文件,生成索引;也可以通過提出查找請求,並得到返回結果。

Lucene簡介

Lucene是apache軟件基金會4 jakarta項目組的一個子項目,是一個開放源代碼的全文檢索引擎工具包,但它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎(英文與德文兩種西方語言)。Lucene的目的是爲軟件開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能,或者是以此爲基礎建立起完整的全文檢索引擎。Lucene是一套用於全文檢索和搜尋的開源程式庫,由Apache軟件基金會支持和提供。Lucene提供了一個簡單卻強大的應用程式接口,能夠做全文索引和搜尋。在Java開發環境裏Lucene是一個成熟的免費開源工具。就其本身而言,Lucene是當前以及最近幾年最受歡迎的免費Java信息檢索程序庫。人們經常提到信息檢索程序庫,雖然與搜索引擎有關,但不應該將信息檢索程序庫與搜索引擎相混淆。

Lucene是一個全文檢索引擎的架構。那什麼是全文搜索引擎?

全文搜索引擎是名副其實的搜索引擎,國外具代表性的有Google、Fast/AllTheWeb、AltaVista、Inktomi、Teoma、WiseNut等,國內著名的有百度(Baidu)。它們都是通過從互聯網上提取的各個網站的信息(以網頁文字爲主)而建立的數據庫中,檢索與用戶查詢條件匹配的相關記錄,然後按一定的排列順序將結果返回給用戶,因此他們是真正的搜索引擎。

從搜索結果來源的角度,全文搜索引擎又可細分爲兩種,一種是擁有自己的檢索程序(Indexer),俗稱“蜘蛛”(Spider)程序或“機器人”(Robot)程序,並自建網頁數據庫,搜索結果直接從自身的數據庫中調用,如上面提到的7家引擎;另一種則是租用其他引擎的數據庫,並按自定的格式排列搜索結果,如Lycos引擎。

Elasticsearch和Solr比較

ElasticSearch vs Solr 總結

  (1)es基本是開箱即用,非常簡單。Solr安裝略微複雜一丟丟,可關注(solr6.6教程-基礎環境搭建(一)

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

  (3)Solr 支持更多格式的數據,比如JSON、XML、CSV,而 Elasticsearch 僅支持json文件格式。

  (4)Solr 官方提供的功能更多,而 Elasticsearch 本身更注重於核心功能,高級功能多有第三方插件提供,例如圖形化界面需要kibana友好支撐

  (5)Solr 查詢快,但更新索引時慢(即插入刪除慢),用於電商等查詢多的應用;

      ES建立索引快(即查詢慢),即實時性查詢快,用於facebook新浪等搜索。

       Solr 是傳統搜索應用的有力解決方案,但 Elasticsearch 更適用於新興的實時搜索應用。

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

 

Hermes

在整理solr和es資料的時候意外發現了一篇文章 Hermes與開源的Solr、ElasticSearch的不同,中提到了hermes和他們兩者的對比,於是摘抄了下面的部分文字,由於首次見到沒有什麼瞭解,今摘抄下了給廣大讀者有興趣的朋友吧1

Solr\ES :偏重於爲小規模的數據提供全文檢索服務;Hermes:則更傾向於爲大規模的數據倉庫提供索引支持,爲大規模數據倉庫提供即席分析的解決方案,並降低數據倉庫的成本,Hermes數據量更“大”。

Solr、ES的使用特點如下:

1. 源自搜索引擎,側重搜索與全文檢索。 
2. 數據規模從幾百萬到千萬不等,數據量過億的集羣特別少。

Hermes:的使用特點如下:

1. 一個基於大索引技術的海量數據實時檢索分析平臺。側重數據分析。 
2. 數據規模從幾億到萬億不等。最小的表也是千萬級別。在騰訊17 臺TS5機器,就可以處理每天450億的數據(每條數據1kb左右),數據可以保存一個月之久。

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