一、Elasticsearch和MongoDB/Redis/Memcache同樣,是非關係型數據庫。算法
是一個接近實時的搜索平臺,從索引這個文檔到這個文檔可以被搜索到只有一個輕微的延遲,企業應用定位:採用Restful API標準的可擴展和高可用的實時數據分析的全文搜索工具。sql
二、可拓展:支持一主多從且擴容簡易,只要cluster.name一致且在同一個網絡中就能自動加入當前集羣;自己就是開源軟件,也支持不少開源的第三方插件。數據庫
三、高可用:在一個集羣的多個節點中進行分佈式存儲,索引支持shards和複製,即便部分節點down掉,也能自動進行數據恢復和主從切換。緩存
四、採用RestfulAPI標準:經過http接口使用JSON格式進行操做數據。服務器
五、數據存儲的最小單位是文檔,本質上是一個JSON 文本:網絡
實際項目開發中,幾乎每一個系統都會有一個搜索的功能,數據量少時能夠直接從主數據庫中好比Mysql搜索。架構
但當搜索作到必定程度時,好比系統數據量上了10億、100億條的時候,傳統的關係型數據庫的I/O性能和統計分析性能就難以知足用戶須要了。分佈式
因此不少公司都會把搜索單獨作成一個獨立的模塊,用ElasticSearch等來實現。工具
雖然內存緩存數據庫的讀寫性能很高,但徹底把數據放在內存中是不太現實的,好比到PB級別的數據,按照每一個節點96G內存計算,性能
在內存徹底裝滿的數據狀況下,須要的機器是:1PB=1024T=1048576G ,節點數就是1048576/96=10922個 ,再考慮到數據備份,節點數還須要翻倍,成本巨大決定了其不現實!
Elasticsearch+ Logstash + Kibana是同一家公司開發的3個開源工具,可組合起來搭建海量日誌分析平臺,目前不少公司都在使用這種方式搭建日誌分析平臺進行大數據分析。
REST(RepresentationalState Transfer)是一種軟件架構的設計風格(不是標準),經過 HTTP接口處理數據,主要用於客戶端和服務器的數據交互。
該風格的具體特色——在服務器端,應用程序對象、數據庫記錄、算法、文本、圖片等都是一個實體資源,使用 URI標識,
全部資源都共享統一的接口(標準的HTTP方法)好比 GET、PUT、POST 和 DELETE,在客戶端和服務器之間傳輸數據。
本質就是以命令方式發送HTTP請求,能夠完成好比發送表單信息、文件上傳、分段下載、模擬登陸等,理論上在APP或Web裏能操做的經過此指令都能操做。