01-Elasticsearch簡介

lucene和elasticsearch的前世今生

lucene钝的,最先進(jìn)及塘、功能最強(qiáng)大的搜索庫封锉,直接基于lucene開發(fā)撕攒,非常復(fù)雜,api復(fù)雜(實現(xiàn)一些簡單的功能烘浦,寫大量的java代碼)抖坪,需要深入理解原理(各種索引結(jié)構(gòu))

elasticsearch,基于lucene闷叉,隱藏復(fù)雜性擦俐,提供簡單易用的restful api接口、java api接口(還有其他語言的api接口)
(1)分布式的文檔存儲引擎
(2)分布式的搜索引擎和分析引擎
(3)分布式握侧,支持PB級數(shù)據(jù)
開箱即用蚯瞧,優(yōu)秀的默認(rèn)參數(shù),不需要任何額外設(shè)置品擎,完全開源

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

elasticsearch的核心概念

(1)Near Realtime(NRT):近實時辫呻,兩個意思清钥,從寫入數(shù)據(jù)到數(shù)據(jù)可以被搜索到有一個小延遲(大概1秒);基于es執(zhí)行搜索和分析可以達(dá)到秒級
(2)Cluster:集群放闺,包含多個節(jié)點循捺,每個節(jié)點屬于哪個集群是通過一個配置(集群名稱,默認(rèn)是elasticsearch)來決定的雄人,對于中小型應(yīng)用來說从橘,剛開始一個集群就一個節(jié)點很正常
(3)Node:節(jié)點,集群中的一個節(jié)點础钠,節(jié)點也有一個名稱(默認(rèn)是隨機(jī)分配的)恰力,節(jié)點名稱很重要(在執(zhí)行運維管理操作的時候),默認(rèn)節(jié)點會去加入一個名稱為“elasticsearch”的集群旗吁,如果直接啟動一堆節(jié)點踩萎,那么它們會自動組成一個elasticsearch集群,當(dāng)然一個節(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": "長虹電視機(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:單臺機(jī)器無法存儲大量數(shù)據(jù)吓妆,es可以將一個索引中的數(shù)據(jù)切分為多個shard,分布在多臺服務(wù)器上存儲吨铸。有了shard就可以橫向擴(kuò)展行拢,存儲更多數(shù)據(jù),讓搜索和分析等操作分布到多臺服務(wù)器上去執(zhí)行诞吱,提升吞吐量和性能舟奠。每個shard都是一個lucene index竭缝。
(8)replica:任何一個服務(wù)器隨時可能故障或宕機(jī),此時shard可能就會丟失沼瘫,因此可以為每個shard創(chuàng)建多個replica副本抬纸。replica可以在shard故障時提供備用服務(wù),保證數(shù)據(jù)不丟失耿戚,多個replica還可以提升搜索操作的吞吐量和性能湿故。primary shard(建立索引時一次設(shè)置,不能修改膜蛔,默認(rèn)5個)晓锻,replica shard(隨時修改數(shù)量,默認(rèn)1個)飞几,默認(rèn)每個索引10個shard砚哆,5個primary shard,5個replica shard屑墨,最小的高可用配置躁锁,是2臺服務(wù)器。

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ù)進(jìn)行近實時的處理
分布式:ES自動可以將海量數(shù)據(jù)分散到多臺服務(wù)器上去存儲和檢索
海聯(lián)數(shù)據(jù)的處理:分布式以后胳赌,就可以采用大量的服務(wù)器去存儲和檢索數(shù)據(jù),自然而然就可以實現(xiàn)海量數(shù)據(jù)的處理了
近實時:檢索個數(shù)據(jù)要花費1小時(這就不要近實時匙隔,離線批處理疑苫,batch-processing);在秒級別對數(shù)據(jù)進(jìn)行搜索和分析

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

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進(jìn)行復(fù)雜的數(shù)據(jù)分析(ELK技術(shù),elasticsearch+logstash+kibana)
7螟凭、商品價格監(jiān)控網(wǎng)站虚青,用戶設(shè)定某商品的價格閾值,當(dāng)?shù)陀谠撻撝档臅r候螺男,發(fā)送通知消息給用戶棒厘,比如說訂閱牙膏的監(jiān)控,如果高露潔牙膏的家庭套裝低于50塊錢下隧,就通知我奢人,我就去買
8、BI系統(tǒng)淆院,商業(yè)智能何乎,Business Intelligence。比如說有個大型商場集團(tuán)土辩,BI支救,分析一下某某區(qū)域最近3年的用戶消費金額的趨勢以及用戶群體的組成構(gòu)成,產(chǎn)出相關(guān)的數(shù)張報表脯燃,**區(qū)搂妻,最近3年,每年消費金額呈現(xiàn)100%的增長辕棚,而且用戶群體85%是高級白領(lǐng)欲主,開一個新商場。ES執(zhí)行數(shù)據(jù)分析和挖掘逝嚎,Kibana進(jìn)行數(shù)據(jù)可視化

國內(nèi)
9扁瓢、國內(nèi):站內(nèi)搜索(電商,招聘补君,門戶引几,等等),IT系統(tǒng)搜索(OA挽铁,CRM伟桅,ERP,等等)叽掘,數(shù)據(jù)分析(ES熱門的一個使用場景)

Elasticsearch的特點楣铁,跟其他類似的東西不同的地方在哪里

1、可以作為一個大型分布式集群(數(shù)百臺服務(wù)器)技術(shù)更扁,處理PB級數(shù)據(jù)盖腕,服務(wù)大公司赫冬;也可以運行在單機(jī)上,服務(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ù)量不大冗澈,操作不是太復(fù)雜钦勘。
4、數(shù)據(jù)庫的功能面對很多領(lǐng)域是不夠用的(事務(wù)亚亲,還有各種聯(lián)機(jī)事務(wù)型的操作)彻采;
特殊的功能,比如全文檢索捌归,同義詞處理肛响,相關(guān)度排名,復(fù)雜數(shù)據(jù)分析惜索,海量數(shù)據(jù)的近實時處理特笋;Elasticsearch作為傳統(tǒng)數(shù)據(jù)庫的一個補(bǔ)充,提供了數(shù)據(jù)庫所不不能提供的很多功能巾兆。

如果用數(shù)據(jù)庫做搜索會怎么樣.png
什么是全文檢索.png
什么是Elasticsearch.png
Elasticsearch近實時概念的解釋.png
shard和replica的解釋.png

參考
江南一點雨

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末猎物,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子角塑,更是在濱河造成了極大的恐慌蔫磨,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吉拳,死亡現(xiàn)場離奇詭異质帅,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門煤惩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嫉嘀,“玉大人,你說我怎么就攤上這事魄揉〖粑辏” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵洛退,是天一觀的道長瓣俯。 經(jīng)常有香客問我,道長兵怯,這世上最難降的妖魔是什么彩匕? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮媒区,結(jié)果婚禮上驼仪,老公的妹妹穿的比我還像新娘。我一直安慰自己袜漩,他們只是感情好绪爸,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著宙攻,像睡著了一般奠货。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上座掘,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天递惋,我揣著相機(jī)與錄音,去河邊找鬼雹顺。 笑死丹墨,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嬉愧。 我是一名探鬼主播贩挣,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼没酣!你這毒婦竟也來了王财?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤裕便,失蹤者是張志新(化名)和其女友劉穎绒净,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體偿衰,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡挂疆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年改览,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缤言。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡宝当,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出胆萧,到底是詐尸還是另有隱情庆揩,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布跌穗,位于F島的核電站订晌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蚌吸。R本人自食惡果不足惜锈拨,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望套利。 院中可真熱鬧推励,春花似錦鹤耍、人聲如沸肉迫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喊衫。三九已至,卻和暖如春杆怕,著一層夾襖步出監(jiān)牢的瞬間族购,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工陵珍, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留寝杖,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓互纯,卻偏偏與公主長得像瑟幕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子留潦,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容