一、lucene和elasticsearch的前世此生java
lucene,最早進、功能最強大的搜索庫,直接基於lucene開發,很是複雜,api複雜(實現一些簡單的功能,寫大量的java代碼),須要深刻理解原理(各類索引結構)數據庫
elasticsearch,基於lucene,隱藏複雜性,提供簡單易用的restful api接口、java api接口(還有其餘語言的api接口)
(1)分佈式的文檔存儲引擎
(2)分佈式的搜索引擎和分析引擎
(3)分佈式,支持PB級數據api
開箱即用,優秀的默認參數,不須要任何額外設置,徹底開源服務器
二、elasticsearch的核心概念restful
(1)Near Realtime(NRT):近實時,兩個意思,數據結構
從寫入數據到數據能夠被搜索到有一個小延遲(大概1秒);elasticsearch
基於es執行搜索和分析能夠達到秒級分佈式
(2)Cluster:集羣,包含多個節點,
(3)Node:節點,默認節點會去加入一個名稱爲「elasticsearch」的集羣,若是直接啓動一堆節點,那麼它們會自動組成一個elasticsearch集羣搜索引擎
(4)Document&field:文檔,es中的最小數據單元,一個document能夠是一條客戶數據,一條商品分類數據,一條訂單數據,一般用JSON數據結構表示,每一個index下的type中,均可以去存儲多個document。一個document裏面有多個field,每一個field就是一個數據字段。rest
(5)Index:索引,包含一堆有類似結構的文檔數據,
(6)Type:類型,每一個索引裏均可以有一個或多個type,type是index中的一個邏輯數據分類,一個type下的document,都有相同的field,好比博客系統,有一個索引,能夠定義用戶數據type,博客數據type,評論數據type。
(7)shard:單臺機器沒法存儲大量數據,es能夠將一個索引中的數據切分爲多個shard,分佈在多臺服務器上存儲。
(8)replica:任何一個服務器隨時可能故障或宕機,此時shard可能就會丟失,所以能夠爲每一個shard建立多個replica副本。
三、elasticsearch核心概念 vs. 數據庫核心概念
Elasticsearch 數據庫
-----------------------------------------
Document 行 Type 表 Index 庫