溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Elasticsearch集群上線經(jīng)驗技術(shù)點Welcome

發(fā)布時間:2020-02-14 11:09:52 來源:網(wǎng)絡(luò) 閱讀:498 作者:拎壺沖沖沖 欄目:大數(shù)據(jù)

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

(1)比方說,每條記錄的指定字段的文本,可能會很長,比如說“商品描述”字段的長度,有長達數(shù)千個,甚至數(shù)萬個字符,這個時候,每次都要對每條記錄的所有文本進行掃描,懶判斷說,你包不包含我指定的這個關(guān)鍵詞(比如說“牙膏”)
(2)還不能將搜索詞拆分開來,盡可能去搜索更多的符合你的期望的結(jié)果,比如輸入“生化機”,就搜索不出來“生化危機”
Elasticsearch集群上線經(jīng)驗技術(shù)點Welcome
用數(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來針對磁盤上額。
Elasticsearch集群上線經(jīng)驗技術(shù)點Welcome
4.什么是Elasticsearch?
Elasticsearch集群上線經(jīng)驗技術(shù)點Welcome
接下來我們再看
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. Elasticsearch的適用場景,能在什么地方發(fā)揮作用
    國外

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

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)。

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

(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 庫

向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI