elasticsearch:分佈式檢索引擎,擴展性好
使用Lucene作爲核心,通過restful api來請求使搜索變得簡單
特點:分佈式,多用戶,搜索引擎,restful web接口,支持實時get請求,適合作爲nosql數據存儲,但是缺少分佈式事務
ES解決了這些問題
1、自動維護數據的分佈到多個節點的索引的建立,還有搜索請求分佈到多個節點的執行 即檢索數據
2、自動維護數據的冗餘副本,保證了一旦機器宕機,不會丟失數據
3、速度快
原理:
當ElasticSearch的節點啓動後,它會利用多播(multicast)(或者單播,如果用戶更改了配置)尋找集羣中的其它節點,並與之建立連接。這個過程如下圖所示
概念:
1.索引:相當於表名
2.類型:相當於表結構
3.文檔: 表中數據
關係:一個 Elasticsearch 集羣可以包含多個索引(數據庫),也就是說其中包含了很多類型(表)。這些類型中包含了很多的文檔(行),然後每個文檔中又包含了很多的字段(列)
Cluster:集羣:可運行在多個服務器上
node:節點:形成集羣的每個服務器叫節點
shard:分片:文檔多時,由於內存限制,磁盤處理不足速度變慢時,一個節點不夠,數據可以分爲較小的分片,每個分片放到不同的服務器上。當查詢的索引分佈在多個分片上時,es會把查詢發送給每個相關的分片,並將結果組成一起返回
Replia:副本:爲提高查詢吞吐量或實現高可用性,可以使用分片副本。
副本是一個分片的精確複製,每個分片可以有零個或多個副本。ES中可以有許多相同的分片,其中之一被選擇更改索引操作,這種特殊的分片稱爲主分片。
當主分片丟失時,如:該分片所在的數據不可用時,集羣將副本提升爲新的主分片。
master-slave架構:建立索引回先發到master,master建立完索引後將集羣狀態同步到slave
只有建立索引和類型菜經過master,數據(文檔)的寫入有個簡單的routing規則,可以route到集羣任意節點,所以寫壓力是分散到整個集羣的
keyword有分詞
搜索引擎的原理:反向索引,倒排索引:通過對內容進行分詞建立倒排索引,指向title索引,內容->標題反向查詢
一個內容如果在多個標題的內容中存在則可指向多個標題;對關鍵字建立倒排索引
和百度,谷歌原理比較像,谷歌有停頓詞,無意義的詞或者符號
典型應用:ELK系統 ELK=elasticsearch+Logstash+kibana