Elasticsearch集群上線經(jīng)驗(yàn)技術(shù)點(diǎn)Welcome

Elasticsearch集群搭建
這么長(zhǎng)時(shí)間了ELK我們聽得耳朵都起繭子了。但ELK我們到底掌握的了多少呢,有或者說作為運(yùn)維人員你部署的ELK是否可以到線上應(yīng)用呢?下面我跟大家說說我個(gè)人的此集群上線思路與線上部署和應(yīng)用的方法。此文比較長(zhǎng),同時(shí)也會(huì)分段跟新,防止大家只看做法不看思路。下面我要跟大家說:Welcome to my ELK world!我講分為兩條路走,第一條路技術(shù)點(diǎn)補(bǔ)充,第二條路生產(chǎn)環(huán)境線上操作。以后文章都會(huì)先更新技術(shù)點(diǎn)再整理操作。
ELK其實(shí)看起來簡(jiǎn)單但是他是三個(gè)技術(shù)的結(jié)合,分別是:elasticsearch,logstash,kibana
其官網(wǎng)地址為:https://www.elastic.co/
我們學(xué)習(xí)的同時(shí)可以參考官網(wǎng)的權(quán)威指南。
接下來我們開始分模塊來做ELK。
一、 Elasticsearch
Elasticsearch 是一個(gè)分布式、可擴(kuò)展、實(shí)時(shí)的搜索與數(shù)據(jù)分析引擎。 它能從項(xiàng)目一開始就賦予你的數(shù)據(jù)以搜索、分析和探索的能力,這是通常沒有預(yù)料到的。 它存在還因?yàn)樵紨?shù)據(jù)如果只是躺在磁盤里面根本就毫無用處。
哦,讀到這里你了解到Elasticsearch,分布式,高性能,高可用,可伸縮的搜索和分析系統(tǒng)
那下面有幾個(gè)為題:
1、什么是搜索?
2、如果用數(shù)據(jù)庫(kù)做搜索會(huì)怎么樣?
3、什么是全文檢索、倒排索引和Lucene?
4、什么是Elasticsearch?
能不看下面內(nèi)容回答上來的請(qǐng)讀下一篇內(nèi)容,因?yàn)槟阋延谢A(chǔ)DBA經(jīng)驗(yàn)。
那我來給大家回答上邊的問題,
1.什么時(shí)索引?
百度:我們比如說想找尋任何的信息的時(shí)候,就會(huì)上百度去搜索一下,比如說找一部自己喜歡的電影,或者說找一本喜歡的書,或者找一條感興趣的新聞(提到搜索的第一印象)
百度 != 搜索,這是不對(duì)的

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),興寧企業(yè)網(wǎng)站建設(shè),興寧品牌網(wǎng)站建設(shè),網(wǎng)站定制,興寧網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,興寧網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

垂直搜索(站內(nèi)搜索)

互聯(lián)網(wǎng)的搜索:電商網(wǎng)站,招聘網(wǎng)站,新聞網(wǎng)站,各種app
IT系統(tǒng)的搜索:OA軟件,辦公自動(dòng)化軟件,會(huì)議管理,日程管理,項(xiàng)目管理,員工管理,搜索“張三”,“張三兒”,“張小三”;有個(gè)電商網(wǎng)站,賣家,后臺(tái)管理系統(tǒng),搜索“牙膏”,訂單,“牙膏相關(guān)的訂單”

搜索,就是在任何場(chǎng)景下,找尋你想要的信息,這個(gè)時(shí)候,會(huì)輸入一段你要搜索的關(guān)鍵字,然后就期望找到這個(gè)關(guān)鍵字相關(guān)的有些信息。

  1. 如果用數(shù)據(jù)庫(kù)做搜索會(huì)怎么樣?
    做軟件開發(fā)的話,或者對(duì)IT、計(jì)算機(jī)有一定的了解的話,都知道,數(shù)據(jù)都是存儲(chǔ)在數(shù)據(jù)庫(kù)里面的,比如說電商網(wǎng)站的商品信息,招聘網(wǎng)站的職位信息,新聞網(wǎng)站的新聞信息,等等吧。所以說,很自然的一點(diǎn),如果說從技術(shù)的角度去考慮,如何實(shí)現(xiàn)如說,電商網(wǎng)站內(nèi)部的搜索功能的話,就可以考慮,去使用數(shù)據(jù)庫(kù)去進(jìn)行搜索。

(1)比方說,每條記錄的指定字段的文本,可能會(huì)很長(zhǎng),比如說“商品描述”字段的長(zhǎng)度,有長(zhǎng)達(dá)數(shù)千個(gè),甚至數(shù)萬個(gè)字符,這個(gè)時(shí)候,每次都要對(duì)每條記錄的所有文本進(jìn)行掃描,懶判斷說,你包不包含我指定的這個(gè)關(guān)鍵詞(比如說“牙膏”)
(2)還不能將搜索詞拆分開來,盡可能去搜索更多的符合你的期望的結(jié)果,比如輸入“生化機(jī)”,就搜索不出來“生化危機(jī)”
Elasticsearch集群上線經(jīng)驗(yàn)技術(shù)點(diǎn)Welcome
用數(shù)據(jù)庫(kù)來實(shí)現(xiàn)搜索,是不太靠譜的。通常來說,性能會(huì)很差。
3.什么是全文檢索和Lucene?
(1)全文檢索,倒排索引
(2)lucene,就是一個(gè)jar包,里面包含了封裝好的各種建立倒排索引,以及進(jìn)行搜索的代碼,包括各種算法。我們就用java開發(fā)的時(shí)候,引入lucene jar,然后基于lucene的api進(jìn)行去進(jìn)行開發(fā)就可以了。用lucene,我們就可以去將已有的數(shù)據(jù)建立索引,lucene會(huì)在本地磁盤上面,給我們組織索引的數(shù)據(jù)結(jié)構(gòu)。另外的話,我們也可以用lucene提供的一些功能和api來針對(duì)磁盤上額。
Elasticsearch集群上線經(jīng)驗(yàn)技術(shù)點(diǎn)Welcome
4.什么是Elasticsearch?
Elasticsearch集群上線經(jīng)驗(yàn)技術(shù)點(diǎn)Welcome
接下來我們?cè)倏?br/>1、Elasticsearch的功能,干什么的
2、Elasticsearch的適用場(chǎng)景,能在什么地方發(fā)揮作用
3、Elasticsearch的特點(diǎn),跟其他類似的東西不同的地方在哪里
1、Elasticsearch的功能
1.Elasticsearch的功能,干什么的
(1)分布式的搜索引擎和數(shù)據(jù)分析引擎

搜索:百度,網(wǎng)站的站內(nèi)搜索,IT系統(tǒng)的檢索
數(shù)據(jù)分析:電商網(wǎng)站,最近7天牙膏這種商品銷量排名前10的商家有哪些;新聞網(wǎng)站,最近1個(gè)月訪問量排名前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='日化用品'
部分匹配、自動(dòng)完成、搜索糾錯(cuò)、搜索推薦
數(shù)據(jù)分析:我們分析每一個(gè)商品分類下有多少個(gè)商品,select category_id,count(*) from products group by category_id

(3)對(duì)海量數(shù)據(jù)進(jìn)行近實(shí)時(shí)的處理

分布式:ES自動(dòng)可以將海量數(shù)據(jù)分散到多臺(tái)服務(wù)器上去存儲(chǔ)和檢索
海聯(lián)數(shù)據(jù)的處理:分布式以后,就可以采用大量的服務(wù)器去存儲(chǔ)和檢索數(shù)據(jù),自然而然就可以實(shí)現(xiàn)海量數(shù)據(jù)的處理了
近實(shí)時(shí):檢索個(gè)數(shù)據(jù)要花費(fèi)1小時(shí)(這就不要近實(shí)時(shí),離線批處理,batch-processing);在秒級(jí)別對(duì)數(shù)據(jù)進(jìn)行搜索和分析

跟分布式/海量數(shù)據(jù)相反的:lucene,單機(jī)應(yīng)用,只能在單臺(tái)服務(wù)器上使用,最多只能處理單臺(tái)服務(wù)器可以處理的數(shù)據(jù)量

  1. Elasticsearch的適用場(chǎng)景,能在什么地方發(fā)揮作用
    國(guó)外

(1)維基百科,類似百度百科,牙膏,牙膏的維基百科,全文檢索,高亮,搜索推薦
(2)The Guardian(國(guó)外新聞網(wǎng)站),類似搜狐新聞,用戶行為日志(點(diǎn)擊,瀏覽,收藏,評(píng)論)+社交網(wǎng)絡(luò)數(shù)據(jù)(對(duì)某某新聞的相關(guān)看法),數(shù)據(jù)分析,給到每篇新聞文章的作者,讓他知道他的文章的公眾反饋(好,壞,熱門,垃圾,鄙視,崇拜)
(3)Stack Overflow(國(guó)外的程序異常討論論壇),IT問題,程序的報(bào)錯(cuò),提交上去,有人會(huì)跟你討論和回答,全文檢索,搜索相關(guān)問題和答案,程序報(bào)錯(cuò)了,就會(huì)將報(bào)錯(cuò)信息粘貼到里面去,搜索有沒有對(duì)應(yīng)的答案
(4)GitHub(開源代碼管理),搜索上千億行代碼
(5)電商網(wǎng)站,檢索商品
(6)日志數(shù)據(jù)分析,logstash采集日志,ES進(jìn)行復(fù)雜的數(shù)據(jù)分析(ELK技術(shù),elasticsearch+logstash+kibana)
(7)商品價(jià)格監(jiān)控網(wǎng)站,用戶設(shè)定某商品的價(jià)格閾值,當(dāng)?shù)陀谠撻撝档臅r(shí)候,發(fā)送通知消息給用戶,比如說訂閱牙膏的監(jiān)控,如果高露潔牙膏的家庭套裝低于50塊錢,就通知我,我就去買
(8)BI系統(tǒng),商業(yè)智能,Business Intelligence。比如說有個(gè)大型商場(chǎng)集團(tuán),BI,分析一下某某區(qū)域最近3年的用戶消費(fèi)金額的趨勢(shì)以及用戶群體的組成構(gòu)成,產(chǎn)出相關(guān)的數(shù)張報(bào)表,**區(qū),最近3年,每年消費(fèi)金額呈現(xiàn)100%的增長(zhǎng),而且用戶群體85%是高級(jí)白領(lǐng),開一個(gè)新商場(chǎng)。ES執(zhí)行數(shù)據(jù)分析和挖掘,Kibana進(jìn)行數(shù)據(jù)可視化

國(guó)內(nèi)

(9)國(guó)內(nèi):站內(nèi)搜索(電商,招聘,門戶,等等),IT系統(tǒng)搜索(OA,CRM,ERP,等等),數(shù)據(jù)分析(ES熱門的一個(gè)使用場(chǎng)景)

  1. Elasticsearch的特點(diǎn)
    (1)可以作為一個(gè)大型分布式集群(數(shù)百臺(tái)服務(wù)器)技術(shù),處理PB級(jí)數(shù)據(jù),服務(wù)大公司;也可以運(yùn)行在單機(jī)上,服務(wù)小公司
    (2)Elasticsearch不是什么新技術(shù),主要是將全文檢索、數(shù)據(jù)分析以及分布式技術(shù),合并在了一起,才形成了獨(dú)一無二的ES;lucene(全文檢索),商用的數(shù)據(jù)分析軟件(也是有的),分布式數(shù)據(jù)庫(kù)(mycat)
    (3)對(duì)用戶而言,是開箱即用的,非常簡(jiǎn)單,作為中小型的應(yīng)用,直接3分鐘部署一下ES,就可以作為生產(chǎn)環(huán)境的系統(tǒng)來使用了,數(shù)據(jù)量不大,操作不是太復(fù)雜
    (4)數(shù)據(jù)庫(kù)的功能面對(duì)很多領(lǐng)域是不夠用的(事務(wù),還有各種聯(lián)機(jī)事務(wù)型的操作);特殊的功能,比如全文檢索,同義詞處理,相關(guān)度排名,復(fù)雜數(shù)據(jù)分析,海量數(shù)據(jù)的近實(shí)時(shí)處理;Elasticsearch作為傳統(tǒng)數(shù)據(jù)庫(kù)的一個(gè)補(bǔ)充,提供了數(shù)據(jù)庫(kù)所不不能提供的很多功能

1、lucene和elasticsearch的前世今生
2、elasticsearch的核心概念
3、elasticsearch核心概念 vs. 數(shù)據(jù)庫(kù)核心概念
1.lucene和elasticsearch的前世今生
lucene,最先進(jìn)、功能最強(qiáng)大的搜索庫(kù),直接基于lucene開發(fā),非常復(fù)雜,api復(fù)雜(實(shí)現(xiàn)一些簡(jiǎn)單的功能,寫大量的java代碼),需要深入理解原理(各種索引結(jié)構(gòu))

elasticsearch,基于lucene,隱藏復(fù)雜性,提供簡(jiǎn)單易用的restful api接口、java api接口(還有其他語(yǔ)言的api接口)
(1)分布式的文檔存儲(chǔ)引擎
(2)分布式的搜索引擎和分析引擎
(3)分布式,支持PB級(jí)數(shù)據(jù)

開箱即用,優(yōu)秀的默認(rèn)參數(shù),不需要任何額外設(shè)置,完全開源

關(guān)于elasticsearch的一個(gè)傳說,有一個(gè)程序員失業(yè)了,陪著自己老婆去英國(guó)倫敦學(xué)習(xí)廚師課程。程序員在失業(yè)期間想給老婆寫一個(gè)菜譜搜索引擎,覺得lucene實(shí)在太復(fù)雜了,就開發(fā)了一個(gè)封裝了lucene的開源項(xiàng)目,compass。后來程序員找到了工作,是做分布式的高性能項(xiàng)目的,覺得compass不夠,就寫了elasticsearch,讓lucene變成分布式的系統(tǒng)。

  1. elasticsearch的核心概念
    1)Near Realtime(NRT):近實(shí)時(shí),兩個(gè)意思,從寫入數(shù)據(jù)到數(shù)據(jù)可以被搜索到有一個(gè)小延遲(大概1秒);基于es執(zhí)行搜索和分析可以達(dá)到秒級(jí)

(2)Cluster:集群,包含多個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)屬于哪個(gè)集群是通過一個(gè)配置(集群名稱,默認(rèn)是elasticsearch)來決定的,對(duì)于中小型應(yīng)用來說,剛開始一個(gè)集群就一個(gè)節(jié)點(diǎn)很正常
(3)Node:節(jié)點(diǎn),集群中的一個(gè)節(jié)點(diǎn),節(jié)點(diǎn)也有一個(gè)名稱(默認(rèn)是隨機(jī)分配的),節(jié)點(diǎn)名稱很重要(在執(zhí)行運(yùn)維管理操作的時(shí)候),默認(rèn)節(jié)點(diǎn)會(huì)去加入一個(gè)名稱為“elasticsearch”的集群,如果直接啟動(dòng)一堆節(jié)點(diǎn),那么它們會(huì)自動(dòng)組成一個(gè)elasticsearch集群,當(dāng)然一個(gè)節(jié)點(diǎn)也可以組成一個(gè)elasticsearch集群

(4)Document&field:文檔,es中的最小數(shù)據(jù)單元,一個(gè)document可以是一條客戶數(shù)據(jù),一條商品分類數(shù)據(jù),一條訂單數(shù)據(jù),通常用JSON數(shù)據(jù)結(jié)構(gòu)表示,每個(gè)index下的type中,都可以去存儲(chǔ)多個(gè)document。一個(gè)document里面有多個(gè)field,每個(gè)field就是一個(gè)數(shù)據(jù)字段。

product document

{
"product_id": "1",
"product_name": "高露潔牙膏",
"product_desc": "高效美白",
"category_id": "2",
"category_name": "日化用品"
}

(5)Index:索引,包含一堆有相似結(jié)構(gòu)的文檔數(shù)據(jù),比如可以有一個(gè)客戶索引,商品分類索引,訂單索引,索引有一個(gè)名稱。一個(gè)index包含很多document,一個(gè)index就代表了一類類似的或者相同的document。比如說建立一個(gè)product index,商品索引,里面可能就存放了所有的商品數(shù)據(jù),所有的商品document。
(6)Type:類型,每個(gè)索引里都可以有一個(gè)或多個(gè)type,type是index中的一個(gè)邏輯數(shù)據(jù)分類,一個(gè)type下的document,都有相同的field,比如博客系統(tǒng),有一個(gè)索引,可以定義用戶數(shù)據(jù)type,博客數(shù)據(jù)type,評(píng)論數(shù)據(jù)type。

商品index,里面存放了所有的商品數(shù)據(jù),商品document

但是商品分很多種類,每個(gè)種類的document的field可能不太一樣,比如說電器商品,可能還包含一些諸如售后時(shí)間范圍這樣的特殊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

每一個(gè)type里面,都會(huì)包含一堆document

{
"product_id": "2",
"product_name": "長(zhǎng)虹電視機(jī)",
"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:?jiǎn)闻_(tái)機(jī)器無法存儲(chǔ)大量數(shù)據(jù),es可以將一個(gè)索引中的數(shù)據(jù)切分為多個(gè)shard,分布在多臺(tái)服務(wù)器上存儲(chǔ)。有了shard就可以橫向擴(kuò)展,存儲(chǔ)更多數(shù)據(jù),讓搜索和分析等操作分布到多臺(tái)服務(wù)器上去執(zhí)行,提升吞吐量和性能。每個(gè)shard都是一個(gè)lucene index。
(8)replica:任何一個(gè)服務(wù)器隨時(shí)可能故障或宕機(jī),此時(shí)shard可能就會(huì)丟失,因此可以為每個(gè)shard創(chuàng)建多個(gè)replica副本。replica可以在shard故障時(shí)提供備用服務(wù),保證數(shù)據(jù)不丟失,多個(gè)replica還可以提升搜索操作的吞吐量和性能。primary shard(建立索引時(shí)一次設(shè)置,不能修改,默認(rèn)5個(gè)),replica shard(隨時(shí)修改數(shù)量,默認(rèn)1個(gè)),默認(rèn)每個(gè)索引10個(gè)shard,5個(gè)primary shard,5個(gè)replica shard,最小的高可用配置,是2臺(tái)服務(wù)器。

3.elasticsearch核心概念 vs. 數(shù)據(jù)庫(kù)核心概念
Elasticsearch 數(shù)據(jù)庫(kù)

Document 行
Type 表
Index 庫(kù)

網(wǎng)站題目:Elasticsearch集群上線經(jīng)驗(yàn)技術(shù)點(diǎn)Welcome
本文路徑:http://muchs.cn/article10/gechgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)站制作、品牌網(wǎng)站設(shè)計(jì)、面包屑導(dǎo)航、搜索引擎優(yōu)化、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)