es目標(1)從零開始,逐步搭建出乙個大型可擴充套件、高效能、監控體系完善、管理體系健全的分布式集群
(2)開發複雜的es搜尋/分析系統之外,從零開始搭建乙個分布式的大型es集群,並制定完善的監控,運維,管理,優化等方案
主要目標兩個應用領域 垂直搜尋引擎,實時資料分析
什麼是elasticsearch?elasticsearch 功能和使用場景(1)分布式的搜尋引擎和資料分析引擎(2)全文檢索,結構化檢索,資料分析
(3)對海量資料進行近實時的處理
(1)可以作為乙個大型分布式集群(數百台伺服器)技術,處理pb級資料,服務大公司;也可以執行在單機上,服務小公司
(2)elasticsearch不是什麼新技術,主要是將全文檢索、資料分析以及分布式技術,合併在了一起,才形成了獨一無二的es;lucene(全文檢索),商用的資料分析軟體(也是有的),分布式資料庫(mycat)
(3)對使用者而言,是開箱即用的,非常簡單,作為中小型的應用,直接3分鐘部署一下es,就可以作為生產環境的系統來使用了,資料量不大,操作不是太複雜
(4)資料庫的功能面對很多領域是不夠用的(事務,還有各種聯機事務型的操作);特殊的功能,比如全文檢索,同義詞處理,相關度排名,複雜資料分析,海量資料的近實時處理;elasticsearch作為傳統資料庫的乙個補充,提供了資料庫所不不能提供的很多功能
elasticsearch名詞解釋(1)near realtime(nrt):近實時,兩個意思,從寫入資料到資料可以被搜尋到有乙個小延遲(大概1秒);基於es執行搜尋和分析可以達到秒級(2)cluster:集群,包含多個節點,每個節點屬於哪個集群是通過乙個配置(集群名稱,預設是elasticsearch)來決定的,對於中小型應用來說,剛開始乙個集群就乙個節點很正常
(3)node:節點,集群中的乙個節點,節點也有乙個名稱(預設是隨機分配的),節點名稱很重要(在執行運維管理操作的時候),預設節點會去加入乙個名稱為「elasticsearch」的集群,如果直接啟動一堆節點,那麼它們會自動組成乙個elasticsearch集群,當然乙個節點也可以組成乙個elasticsearch集群
(4)document&field:文件,es中的最小資料單元,乙個document可以是一條客戶資料,一條商品分類資料,一條訂單資料,通常用json資料結構表示,每個index下的type中,都可以去儲存多個document。乙個document裡面有多個field,每個field就是乙個資料字段。
document 行
type 表
index 庫
elasticsearch 增加,刪除,修改基本語法(1)快速檢查集群的健康狀況 get /_cat/health?v(1)新增商品:新增文件,建立索引
put /index/type/id
put /ecommerce/product/1
get /ecommerce/product/1
}(3)修改商品:替換文件
put /ecommerce/product/1
, "created": true
}(4)修改商品:更新文件
post /ecommerce/product/1/_update}}
(5)刪除商品:刪除文件
delete /ecommerce/product/1
}//再次get 資料室查不到的
elasticsearch對複雜分布式機制的透明隱藏特性shard負載均衡(舉例,假設現在有3個節點,總共有25個shard要分配到3個節點上去,es會自動進行均勻分配,以保持每個節點的均衡的讀寫負載請求)elasticsearch的垂直擴容與水平擴容垂直擴容:採購更強大的伺服器,成本非常高昂,而且會有瓶頸,假設世界上最強大的伺服器容量就是10t,但是當你的總資料量達到5000t的時候,你要採購多少臺最強大的伺服器啊水平擴容:業界經常採用的方案,採購越來越多的普通伺服器,效能比較一般,但是很多普通伺服器組織在一起,就能構成強大的計算和儲存能力
普通伺服器:1t,1萬,100萬
強大伺服器:10t,50萬,500萬
master節點(1)建立或刪除索引(2)增加或刪除節點
1、shard&replica機制再次梳理
(1)index包含多個shard
(2)每個shard都是乙個最小工作單元,承載部分資料,lucene例項,完整的建立索引和處理請求的能力
(3)增減節點時,shard會自動在nodes中負載均衡
(4)primary shard和replica shard,每個document肯定只存在於某乙個primary shard以及其對應的replica shard中,不可能存在於多個primary shard
(5)replica shard是primary shard的副本,負責容錯,以及承擔讀請求負載
(6)primary shard的數量在建立索引的時候就固定了,replica shard的數量可以隨時修改
(7)primary shard的預設數量是5,replica預設是1,預設有10個shard,5個primary shard,5個replica shard
(8)primary shard不能和自己的replica shard放在同乙個節點上(否則節點宕機,primary shard和副本都丟失,起不到容錯的作用),但是可以和其他primary shard的replica shard放在同乙個節點上
2、**單node環境下建立index是什麼樣子的
(1)單node環境下,建立乙個index,有3個primary shard,3個replica shard
(2)集群status是yellow
(3)這個時候,只會將3個primary shard分配到僅有的乙個node上去,另外3個replica shard是無法分配的
(4)集群可以正常工作,但是一旦出現節點宕機,資料全部丟失,而且集群不可用,無法承接任何請求
put /test_index
}
es6學習之路(3) 解構賦值
es6 允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構 destructuring 本質上,這種寫法屬於 模式匹配 只要等號兩邊的模式相同,左邊的變數就會被賦予對應的值 1,陣列 let foo,bar baz 1,2 3 foo 1 foo 1 bar 2 baz 3 let...
我的ES6學習之路(一)
強烈推薦 阮一峰寫的 ecmascript6入門 let和const命令 let命令 let用於宣告變數,用法和var相似,但是不完全相同,有以下幾點區別 let命令只在當前作用域中有效 let不會發生 變數提公升 的現象,變數一定要宣告後在使用他,否則會報錯。問題 es6支援es5 但是如果發生以...
ES6學習之路1 變數的宣告
它是variable的簡寫,可以理解成變數的意思。在es6之前,js宣告變數都是採用的var。例項1 var str hello world console.log str hello world 例項2 var a 2 if true console.log a 3例項3 for var i 0 ...