您好,登錄后才能下訂單哦!
Elasticsearch集群搭建
這么長時間了ELK我們聽得耳朵都起繭子了。但ELK我們到底掌握的了多少呢,有或者說作為運維人員你部署的ELK是否可以到線上應(yīng)用呢?下面我跟大家說說我個人的此集群上線思路與線上部署和應(yīng)用的方法。此文比較長,同時也會分段跟新,防止大家只看做法不看思路。下面我要跟大家說:Welcome to my ELK world!我講分為兩條路走,第一條路技術(shù)點補充,第二條路生產(chǎn)環(huán)境線上操作。以后文章都會先更新技術(shù)點再整理操作。
ELK其實看起來簡單但是他是三個技術(shù)的結(jié)合,分別是:elasticsearch,logstash,kibana
其官網(wǎng)地址為:https://www.elastic.co/
我們學習的同時可以參考官網(wǎng)的權(quán)威指南。
接下來我們開始分模塊來做ELK。
一、 Elasticsearch
Elasticsearch 是一個分布式、可擴展、實時的搜索與數(shù)據(jù)分析引擎。 它能從項目一開始就賦予你的數(shù)據(jù)以搜索、分析和探索的能力,這是通常沒有預料到的。 它存在還因為原始數(shù)據(jù)如果只是躺在磁盤里面根本就毫無用處。
哦,讀到這里你了解到Elasticsearch,分布式,高性能,高可用,可伸縮的搜索和分析系統(tǒng)
那下面有幾個為題:
1、什么是搜索?
2、如果用數(shù)據(jù)庫做搜索會怎么樣?
3、什么是全文檢索、倒排索引和Lucene?
4、什么是Elasticsearch?
能不看下面內(nèi)容回答上來的請讀下一篇內(nèi)容,因為你已有基礎(chǔ)DBA經(jīng)驗。
那我來給大家回答上邊的問題,
1.什么時索引?
百度:我們比如說想找尋任何的信息的時候,就會上百度去搜索一下,比如說找一部自己喜歡的電影,或者說找一本喜歡的書,或者找一條感興趣的新聞(提到搜索的第一印象)
百度 != 搜索,這是不對的
垂直搜索(站內(nèi)搜索)
互聯(lián)網(wǎng)的搜索:電商網(wǎng)站,招聘網(wǎng)站,新聞網(wǎng)站,各種app
IT系統(tǒng)的搜索:OA軟件,辦公自動化軟件,會議管理,日程管理,項目管理,員工管理,搜索“張三”,“張三兒”,“張小三”;有個電商網(wǎng)站,賣家,后臺管理系統(tǒng),搜索“牙膏”,訂單,“牙膏相關(guān)的訂單”
搜索,就是在任何場景下,找尋你想要的信息,這個時候,會輸入一段你要搜索的關(guān)鍵字,然后就期望找到這個關(guān)鍵字相關(guān)的有些信息。
(1)比方說,每條記錄的指定字段的文本,可能會很長,比如說“商品描述”字段的長度,有長達數(shù)千個,甚至數(shù)萬個字符,這個時候,每次都要對每條記錄的所有文本進行掃描,懶判斷說,你包不包含我指定的這個關(guān)鍵詞(比如說“牙膏”)
(2)還不能將搜索詞拆分開來,盡可能去搜索更多的符合你的期望的結(jié)果,比如輸入“生化機”,就搜索不出來“生化危機”
用數(shù)據(jù)庫來實現(xiàn)搜索,是不太靠譜的。通常來說,性能會很差。
3.什么是全文檢索和Lucene?
(1)全文檢索,倒排索引
(2)lucene,就是一個jar包,里面包含了封裝好的各種建立倒排索引,以及進行搜索的代碼,包括各種算法。我們就用java開發(fā)的時候,引入lucene jar,然后基于lucene的api進行去進行開發(fā)就可以了。用lucene,我們就可以去將已有的數(shù)據(jù)建立索引,lucene會在本地磁盤上面,給我們組織索引的數(shù)據(jù)結(jié)構(gòu)。另外的話,我們也可以用lucene提供的一些功能和api來針對磁盤上額。
4.什么是Elasticsearch?
接下來我們再看
1、Elasticsearch的功能,干什么的
2、Elasticsearch的適用場景,能在什么地方發(fā)揮作用
3、Elasticsearch的特點,跟其他類似的東西不同的地方在哪里
1、Elasticsearch的功能
1.Elasticsearch的功能,干什么的
(1)分布式的搜索引擎和數(shù)據(jù)分析引擎
搜索:百度,網(wǎng)站的站內(nèi)搜索,IT系統(tǒng)的檢索
數(shù)據(jù)分析:電商網(wǎng)站,最近7天牙膏這種商品銷量排名前10的商家有哪些;新聞網(wǎng)站,最近1個月訪問量排名前3的新聞版塊是哪些
分布式,搜索,數(shù)據(jù)分析
(2)全文檢索,結(jié)構(gòu)化檢索,數(shù)據(jù)分析
全文檢索:我想搜索商品名稱包含牙膏的商品,select from products where product_name like "%牙膏%"
結(jié)構(gòu)化檢索:我想搜索商品分類為日化用品的商品都有哪些,select from products where category_id='日化用品'
部分匹配、自動完成、搜索糾錯、搜索推薦
數(shù)據(jù)分析:我們分析每一個商品分類下有多少個商品,select category_id,count(*) from products group by category_id
(3)對海量數(shù)據(jù)進行近實時的處理
分布式:ES自動可以將海量數(shù)據(jù)分散到多臺服務(wù)器上去存儲和檢索
海聯(lián)數(shù)據(jù)的處理:分布式以后,就可以采用大量的服務(wù)器去存儲和檢索數(shù)據(jù),自然而然就可以實現(xiàn)海量數(shù)據(jù)的處理了
近實時:檢索個數(shù)據(jù)要花費1小時(這就不要近實時,離線批處理,batch-processing);在秒級別對數(shù)據(jù)進行搜索和分析
跟分布式/海量數(shù)據(jù)相反的:lucene,單機應(yīng)用,只能在單臺服務(wù)器上使用,最多只能處理單臺服務(wù)器可以處理的數(shù)據(jù)量
(1)維基百科,類似百度百科,牙膏,牙膏的維基百科,全文檢索,高亮,搜索推薦
(2)The Guardian(國外新聞網(wǎng)站),類似搜狐新聞,用戶行為日志(點擊,瀏覽,收藏,評論)+社交網(wǎng)絡(luò)數(shù)據(jù)(對某某新聞的相關(guān)看法),數(shù)據(jù)分析,給到每篇新聞文章的作者,讓他知道他的文章的公眾反饋(好,壞,熱門,垃圾,鄙視,崇拜)
(3)Stack Overflow(國外的程序異常討論論壇),IT問題,程序的報錯,提交上去,有人會跟你討論和回答,全文檢索,搜索相關(guān)問題和答案,程序報錯了,就會將報錯信息粘貼到里面去,搜索有沒有對應(yīng)的答案
(4)GitHub(開源代碼管理),搜索上千億行代碼
(5)電商網(wǎng)站,檢索商品
(6)日志數(shù)據(jù)分析,logstash采集日志,ES進行復雜的數(shù)據(jù)分析(ELK技術(shù),elasticsearch+logstash+kibana)
(7)商品價格監(jiān)控網(wǎng)站,用戶設(shè)定某商品的價格閾值,當?shù)陀谠撻撝档臅r候,發(fā)送通知消息給用戶,比如說訂閱牙膏的監(jiān)控,如果高露潔牙膏的家庭套裝低于50塊錢,就通知我,我就去買
(8)BI系統(tǒng),商業(yè)智能,Business Intelligence。比如說有個大型商場集團,BI,分析一下某某區(qū)域最近3年的用戶消費金額的趨勢以及用戶群體的組成構(gòu)成,產(chǎn)出相關(guān)的數(shù)張報表,**區(qū),最近3年,每年消費金額呈現(xiàn)100%的增長,而且用戶群體85%是高級白領(lǐng),開一個新商場。ES執(zhí)行數(shù)據(jù)分析和挖掘,Kibana進行數(shù)據(jù)可視化
國內(nèi)
(9)國內(nèi):站內(nèi)搜索(電商,招聘,門戶,等等),IT系統(tǒng)搜索(OA,CRM,ERP,等等),數(shù)據(jù)分析(ES熱門的一個使用場景)
1、lucene和elasticsearch的前世今生
2、elasticsearch的核心概念
3、elasticsearch核心概念 vs. 數(shù)據(jù)庫核心概念
1.lucene和elasticsearch的前世今生
lucene,最先進、功能最強大的搜索庫,直接基于lucene開發(fā),非常復雜,api復雜(實現(xiàn)一些簡單的功能,寫大量的java代碼),需要深入理解原理(各種索引結(jié)構(gòu))
elasticsearch,基于lucene,隱藏復雜性,提供簡單易用的restful api接口、java api接口(還有其他語言的api接口)
(1)分布式的文檔存儲引擎
(2)分布式的搜索引擎和分析引擎
(3)分布式,支持PB級數(shù)據(jù)
開箱即用,優(yōu)秀的默認參數(shù),不需要任何額外設(shè)置,完全開源
關(guān)于elasticsearch的一個傳說,有一個程序員失業(yè)了,陪著自己老婆去英國倫敦學習廚師課程。程序員在失業(yè)期間想給老婆寫一個菜譜搜索引擎,覺得lucene實在太復雜了,就開發(fā)了一個封裝了lucene的開源項目,compass。后來程序員找到了工作,是做分布式的高性能項目的,覺得compass不夠,就寫了elasticsearch,讓lucene變成分布式的系統(tǒng)。
(2)Cluster:集群,包含多個節(jié)點,每個節(jié)點屬于哪個集群是通過一個配置(集群名稱,默認是elasticsearch)來決定的,對于中小型應(yīng)用來說,剛開始一個集群就一個節(jié)點很正常
(3)Node:節(jié)點,集群中的一個節(jié)點,節(jié)點也有一個名稱(默認是隨機分配的),節(jié)點名稱很重要(在執(zhí)行運維管理操作的時候),默認節(jié)點會去加入一個名稱為“elasticsearch”的集群,如果直接啟動一堆節(jié)點,那么它們會自動組成一個elasticsearch集群,當然一個節(jié)點也可以組成一個elasticsearch集群
(4)Document&field:文檔,es中的最小數(shù)據(jù)單元,一個document可以是一條客戶數(shù)據(jù),一條商品分類數(shù)據(jù),一條訂單數(shù)據(jù),通常用JSON數(shù)據(jù)結(jié)構(gòu)表示,每個index下的type中,都可以去存儲多個document。一個document里面有多個field,每個field就是一個數(shù)據(jù)字段。
product document
{
"product_id": "1",
"product_name": "高露潔牙膏",
"product_desc": "高效美白",
"category_id": "2",
"category_name": "日化用品"
}
(5)Index:索引,包含一堆有相似結(jié)構(gòu)的文檔數(shù)據(jù),比如可以有一個客戶索引,商品分類索引,訂單索引,索引有一個名稱。一個index包含很多document,一個index就代表了一類類似的或者相同的document。比如說建立一個product index,商品索引,里面可能就存放了所有的商品數(shù)據(jù),所有的商品document。
(6)Type:類型,每個索引里都可以有一個或多個type,type是index中的一個邏輯數(shù)據(jù)分類,一個type下的document,都有相同的field,比如博客系統(tǒng),有一個索引,可以定義用戶數(shù)據(jù)type,博客數(shù)據(jù)type,評論數(shù)據(jù)type。
商品index,里面存放了所有的商品數(shù)據(jù),商品document
但是商品分很多種類,每個種類的document的field可能不太一樣,比如說電器商品,可能還包含一些諸如售后時間范圍這樣的特殊field;生鮮商品,還包含一些諸如生鮮保質(zhì)期之類的特殊field
type,日化商品type,電器商品type,生鮮商品type
日化商品type:product_id,product_name,product_desc,category_id,category_name
電器商品type:product_id,product_name,product_desc,category_id,category_name,service_period
生鮮商品type:product_id,product_name,product_desc,category_id,category_name,eat_period
每一個type里面,都會包含一堆document
{
"product_id": "2",
"product_name": "長虹電視機",
"product_desc": "4k高清",
"category_id": "3",
"category_name": "電器",
"service_period": "1年"
}
{
"product_id": "3",
"product_name": "基圍蝦",
"product_desc": "純天然,冰島產(chǎn)",
"category_id": "4",
"category_name": "生鮮",
"eat_period": "7天"
}
(7)shard:單臺機器無法存儲大量數(shù)據(jù),es可以將一個索引中的數(shù)據(jù)切分為多個shard,分布在多臺服務(wù)器上存儲。有了shard就可以橫向擴展,存儲更多數(shù)據(jù),讓搜索和分析等操作分布到多臺服務(wù)器上去執(zhí)行,提升吞吐量和性能。每個shard都是一個lucene index。
(8)replica:任何一個服務(wù)器隨時可能故障或宕機,此時shard可能就會丟失,因此可以為每個shard創(chuàng)建多個replica副本。replica可以在shard故障時提供備用服務(wù),保證數(shù)據(jù)不丟失,多個replica還可以提升搜索操作的吞吐量和性能。primary shard(建立索引時一次設(shè)置,不能修改,默認5個),replica shard(隨時修改數(shù)量,默認1個),默認每個索引10個shard,5個primary shard,5個replica shard,最小的高可用配置,是2臺服務(wù)器。
3.elasticsearch核心概念 vs. 數(shù)據(jù)庫核心概念
Elasticsearch 數(shù)據(jù)庫
Document 行
Type 表
Index 庫
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。