Lucene:壹個開源的搜索庫
Engine:屏蔽 Lucene 操作細節的抽象層
Http:對外提供 restful api,讓不同開發語言的應用都可以接入
Elasticsearch是用 Java 開發的,但它卻不是只支持Java語言,因為它支持RESTful方式調用,那理論上它是支持所有開發語言的
理解∶因為索引可以去掉重復的詞,漢語常用的字和詞大概等於 字典+詞典;常用的英文在牛津詞典也有收錄;如果用計算機的速度查詢 字典+詞典+牛津詞典這些內容是非常快的;但是用這些字典、詞典組成的文章卻是千千萬萬不計其數;
倒排索引的大小最多也就是 字典+詞典。所以通過查詢索引,再通過索引和文檔的關聯關系找到文檔速度比較快。
順序掃描法則是直接去逐個查詢那些不計其數的文章就算是計算的速度也會很慢。
主分片數
即 blog 索引的數據,會被分散到 3 個分片裏面,起到控制每個分片裏文檔數量個數的作用,提供查詢和搜索效率,可以理解為 Mysql 裏的分表。
副本分片
副本分片只是壹個主分片的拷貝,作為硬件故障時保護數據不丟失的冗余備份,並為搜索和返回文檔等讀操作提供服務。
因為對於單節點的架構來說,進行冗余備份就毫無意義的,只會浪費內存和磁盤。
1、Solr :2004年誕生。ES:2010年誕生。ES 更新功能越強大
2、Solr有壹個更大、更成熟的用戶、開發和貢獻者社區
3、當實時建立索引的時候,Solr會產生IO阻塞,而ES則不會,實時建立索引時,ES性能要高於Solr 。
在不斷動態添加數據的時候,solr的檢索效率會變的低下,而es則沒有什麽變化。
4、Solr利用zookeeper進行分布式管理,而es自身帶有分布式系統管理功能。Solr壹般都要部署到web服務器上,比如tomcat。啟動tomcat的時候需要配置tomcat與solr的關聯。Solr 的本質 是壹個動態web項目
5、Solr支持更多的格式數據[xml,json,csv等],而es僅支持json文件格式。
6、Solr是傳統搜索應用的有力解決方案,但是es更適用於新興的實時搜索應用。單純的對已有數據進行檢索的時候,solr效率更好,高於es。
7、Solr官網提供的功能更多,而es本身更註重於核心功能,高級功能多由第三方插件。