001.快速理解Elasticsearch是什么

1. 什么是Elasticsearch

1.1 什么是搜索

搜索主要是指站內(nèi)搜索尺棋,也稱為垂直搜索,包括:

  • 互聯(lián)網(wǎng)搜索:電商網(wǎng)站、招聘網(wǎng)站燎字、新聞網(wǎng)站等以及各種App內(nèi)的搜索
  • IT系統(tǒng)的搜索:OA系統(tǒng)腥椒、項(xiàng)目管理系統(tǒng)內(nèi)的搜索等
  • 百度!=搜索,百度只是一個(gè)搜索引擎

1.2 數(shù)據(jù)庫(kù)搜索的局限性

  • 性能差候衍,全表掃描笼蛛,尤其是當(dāng)查詢的字段的值是很長(zhǎng)的字符串時(shí),性能會(huì)更差
  • 無法滿足業(yè)務(wù)需求蛉鹿,第一條SQL滨砍,匹配不到第4條記錄,第2條SQL也查詢不到第5條記錄

1.3 什么是全文檢索

全文檢索是使用倒排索引技術(shù)實(shí)現(xiàn)的一種搜索方法

Lucene實(shí)現(xiàn)了建立倒排索引妖异、搜索等功能以及各種算法惋戏,對(duì)于開發(fā)人員來說,只要引入lucene的jar包他膳,基于lucene的API進(jìn)行開發(fā)即可响逢。

1.4 什么是Elasticsearch

使用Lucene即可實(shí)現(xiàn)單機(jī)的全文檢索功能,但是無法滿足大數(shù)據(jù)量的搜索棕孙,Elasticsearch是將全文檢索舔亭、數(shù)據(jù)分析以及分布式技術(shù),合并在了一起蟀俊,他就是一個(gè)分布式的钦铺、可以處理海量數(shù)據(jù)的搜索引擎,Elasticsearch集群中的每個(gè)節(jié)點(diǎn)肢预,也是依賴Lucene的职抡。

Elasticsearch基于Lucene開發(fā),有幾下功能:

  • 隱藏了Lucene API的復(fù)雜性误甚,提供了簡(jiǎn)單易用的REST API接口和Java API接口
  • 分布式的文檔存儲(chǔ)缚甩,支持海量數(shù)據(jù)
  • 分布式的搜索引擎和分析引擎
  • 開箱即用
  • 集群自動(dòng)維護(hù)數(shù)據(jù)的分布、多個(gè)節(jié)點(diǎn)索引的建立和搜索請(qǐng)求到各個(gè)節(jié)點(diǎn)的轉(zhuǎn)發(fā)
  • 集群自動(dòng)維護(hù)數(shù)據(jù)的冗余副本窑邦,保證不丟失數(shù)據(jù)
  • 封裝了更多的高級(jí)功能擅威,提供了復(fù)雜的搜索、聚合分析冈钦、基于地理位置的搜索等高級(jí)功能

2. Elasticsearch核心概念

  • Near Realtime(NRT):近實(shí)時(shí)郊丛,從寫入數(shù)據(jù)到數(shù)據(jù)可以被搜索到有一個(gè)小延遲(大概1秒),基于ES執(zhí)行搜索和分析可以達(dá)到秒級(jí)

  • Cluster:集群瞧筛,包含多個(gè)節(jié)點(diǎn)厉熟,每個(gè)節(jié)點(diǎn)屬于哪個(gè)集群是通過一個(gè)配置(集群名稱,默認(rèn)是elasticsearch)來決定的较幌,對(duì)于中小型應(yīng)用來說揍瑟,剛開始一個(gè)集群就一個(gè)節(jié)點(diǎn)很正常

  • 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集群

  • 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ù)字段,例如以下這條描述一個(gè)商品的document

    {
        "product_id": "1",
        "product_name": "高露潔牙膏",
        "product_desc": "高效美白",
        "category_id": "2",
        "category_name": "日化用品"
    }
    
  • Index:索引软瞎,包含一堆有相似結(jié)構(gòu)的文檔數(shù)據(jù)逢唤,比如可以有一個(gè)客戶索引,商品分類索引涤浇,訂單索引鳖藕,索引有一個(gè)名稱。一個(gè)index包含很多document只锭,一個(gè)index就代表了一類類似的或者相同的document著恩。比如說建立一個(gè)product index,商品索引蜻展,里面可能就存放了所有的商品數(shù)據(jù)喉誊,所有的商品document。

  • 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蠕搜,注意:

    • ES 5.x中一個(gè)index可以有多種type
    • ES 6.x中一個(gè)index只能有一種type
    • ES 7.x以后已經(jīng)移除type這個(gè)概念
  • 對(duì)于index怎茫、type和document,可以通過以下案例理解

    商品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(保質(zhì)期)

    每一個(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天"
    }
    
  • index、type写隶、document和field與MySQL的類比

    index     數(shù)據(jù)庫(kù)
    type      表
    document  一行記錄
    field     一個(gè)字段
    
  • mapping:mapping定義了每個(gè)字段的類型等信息倔撞。相當(dāng)于關(guān)系型數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)。

  • 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

  • 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ù)器守屉。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惑艇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拇泛,更是在濱河造成了極大的恐慌滨巴,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碰镜,死亡現(xiàn)場(chǎng)離奇詭異兢卵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)绪颖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門秽荤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人柠横,你說我怎么就攤上這事窃款。” “怎么了牍氛?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵晨继,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我搬俊,道長(zhǎng)紊扬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任唉擂,我火速辦了婚禮餐屎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘玩祟。我一直安慰自己腹缩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著藏鹊,像睡著了一般润讥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盘寡,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天楚殿,我揣著相機(jī)與錄音,去河邊找鬼宴抚。 笑死勒魔,一個(gè)胖子當(dāng)著我的面吹牛甫煞,可吹牛的內(nèi)容都是我干的菇曲。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼抚吠,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼常潮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起楷力,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤喊式,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后萧朝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體岔留,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年检柬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了献联。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡何址,死狀恐怖里逆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情用爪,我是刑警寧澤原押,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站偎血,受9級(jí)特大地震影響诸衔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜颇玷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一笨农、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧亚隙,春花似錦磁餐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽羞延。三九已至,卻和暖如春脾还,著一層夾襖步出監(jiān)牢的瞬間伴箩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工鄙漏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嗤谚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓怔蚌,卻偏偏與公主長(zhǎng)得像巩步,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子桦踊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

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

  • 個(gè)人專題目錄 概述 1. 什么是搜索椅野? 百度:我們比如說想找尋任何的信息的時(shí)候,就會(huì)上百度去搜索一下籍胯,比如說找一部...
    Java及SpringBoot閱讀 896評(píng)論 2 13
  • lucene和elasticsearch的前世今生 lucene竟闪,最先進(jìn)、功能最強(qiáng)大的搜索庫(kù)杖狼,直接基于lucene...
    Y了個(gè)J閱讀 455評(píng)論 0 1
  • 1炼蛤、lucene和elasticsearch的前世今生 2、elasticsearch的核心概念 3蝶涩、elasti...
    保川閱讀 340評(píng)論 0 0
  • 雞鳴狗盜是一個(gè)漢語成語理朋,指微不足道的本領(lǐng)。也指偷偷摸摸的行為子寓。出自于 《史記·孟嘗君列傳》載:齊孟嘗君出使秦被昭王...
    今夜有風(fēng)3閱讀 298評(píng)論 0 2
  • 也許家庭生活應(yīng)該健全暗挑,我的家庭里有一個(gè)聰明而讓我害怕的媽,讓我不想去靠近斜友,我的爸爸是一個(gè)沒學(xué)歷的人炸裆,我們家,應(yīng)該在...
    自由萬念閱讀 47評(píng)論 0 0