全球數據庫排行:DB-Engines Ranking數據庫
首先分別說明三者的概念:服務器
Lucene是一套信息檢索工具包,並不包含搜索引擎系統,它包含了索引結構、讀寫索引工具、相關性工具、排序等功能,所以在使用Lucene時仍須要關注搜索引擎系統,例如數據獲取、解析、分詞等方面的東西。而solr和elasticsearch都是基於該工具包作的一些封裝。架構
Solr是一個有HTTP接口的基於Lucene的查詢服務器,封裝了不少Lucene細節,本身的應用能夠直接利用諸如 .../solr?q=abc 這樣的HTTP GET/POST請求去查詢,維護修改索引。框架
Elasticsearch也是一個創建在全文搜索引擎 Apache Lucene基礎上的搜索引擎。採用的策略是分佈式實時文件存儲,並將每個字段都編入索引,使其能夠被搜索。elasticsearch
Lucene使用上更加靈活,可是你須要本身處理搜素引擎系統架構,以及其餘附加附加功能的實現。而Solr幫你作了更多,可是是一個處於高層的框架,Lucene不少新特性不能及時向上透傳,因此有時候可能發現須要一個功能,Lucene是支持的,可是Solr上已經看不到相關接口。分佈式
而後說明三者之間的區別工具
首先說明三者之間的一個聯繫:solr和elasticsearch都是基於Lucene實現的!搜索引擎
其次spa
solr利用zookpper進行分佈式管理,而elasticsearch自身帶有分佈式協調管理功能;插件
solr比elasticsearch實現更加全面,solr官方提供的功能更多,而elasticsearch自己更注 重於核心功能,高級功能多由第三方插件提供;
solr在傳統的搜索應用中表現好於elasticsearch,而elasticsearch在實時搜索應用方面比solr表現好!
最後有必要說明一下傳統搜索和實時搜索:
傳統搜索是從靜態數據庫中篩選出符合條件的結果,這種結果每每是不可變得、靜態的。而實時搜索則是說用戶對於搜索的結果是實時變化的。