ElasticSearch01 - 核心概念

1、什么是搜索:百度着降、垂直搜索(站內(nèi)搜索)

搜索:通過一個(gè)關(guān)鍵詞或一段描述差油,得到你想要的(相關(guān)度高)結(jié)果。

2任洞、如何通過Mysql實(shí)現(xiàn)搜索功能?

如果我們使用Mysql等關(guān)系型數(shù)據(jù)庫實(shí)現(xiàn)搜索功能蓄喇,我們需要對(duì)搜索的字段進(jìn)行模糊查詢,比如 where name like '%王%'交掏,這樣的模糊查詢導(dǎo)致索引失效妆偏,需要進(jìn)行全表查詢,時(shí)間復(fù)雜度是O(N)盅弛。
另外Mysql不支持分詞钱骂,所以搜索的結(jié)果必須完全包含搜索字段叔锐。

所以使用關(guān)系型數(shù)據(jù)庫:性能差、不可靠见秽、結(jié)果不準(zhǔn)確(相關(guān)度低)

3愉烙、倒排索引

舉例說明:
我們有若干數(shù)據(jù),如圖所示:


模擬存儲(chǔ)的數(shù)據(jù)

建立倒排索引:(簡(jiǎn)單的舉例)

  1. 根據(jù)brandName進(jìn)行分詞解取,得到小米步责、手機(jī)、NFC等
  2. 記錄分詞在brandName中出現(xiàn)的id
  3. 比如搜索小米NFC手機(jī)肮蛹,會(huì)找到對(duì)應(yīng)匹配的詞項(xiàng)勺择,從而找到有匹配度的內(nèi)容


    倒排索引圖示
倒排索引的數(shù)據(jù)結(jié)構(gòu)

1、包含這個(gè)關(guān)鍵詞的document list ——可以簡(jiǎn)單理解為這個(gè)關(guān)鍵字在哪些數(shù)據(jù)中出現(xiàn)過伦忠,比如小米在ID為1,2,4的文檔中出現(xiàn)過省核,則包含小米的document list為1,2昆码,4
2气忠、關(guān)鍵詞在每個(gè)doc中出現(xiàn)的次數(shù) TF term frequency——TF越高則相關(guān)度越高
3、關(guān)鍵詞在整個(gè)索引中出現(xiàn)的次數(shù) IDF inverse doc ——IDF越高則相關(guān)度越低赋咽,可以理解為如果每一個(gè)document都有某個(gè)關(guān)鍵詞旧噪,則用這個(gè)關(guān)鍵詞評(píng)判相關(guān)度是沒有意義的
4、關(guān)鍵詞在當(dāng)前doc中出現(xiàn)的次數(shù)
5脓匿、每個(gè)doc的長(zhǎng)度淘钟,越長(zhǎng)相關(guān)度越低
6、包含這個(gè)關(guān)鍵詞的所有doc的平均長(zhǎng)度

4陪毡、Lucene

本質(zhì)是jar包米母,幫我們創(chuàng)建倒排索引,提供了復(fù)雜的API
如果用Lucene做集群實(shí)現(xiàn)搜索毡琉,會(huì)有那些問題:

① 節(jié)點(diǎn)一旦宕機(jī)铁瞒,節(jié)點(diǎn)數(shù)據(jù)丟失,后果不堪設(shè)想桅滋,可用性差慧耍。
② 自己維護(hù),自己創(chuàng)建管理索引丐谋,單臺(tái)節(jié)點(diǎn)(Lucene是單點(diǎn)的)的承載請(qǐng)求的能力是有限的芍碧,需要人工做負(fù)載。

5号俐、Elasticsearch:分布式师枣、高性能、高可用萧落、可伸縮践美、易維護(hù) ES≠搜索引擎

(1) 分布式的搜索,存儲(chǔ)和數(shù)據(jù)分析引擎
(2) 優(yōu)點(diǎn):

① 面向開發(fā)者友好找岖,屏蔽了Lucene的復(fù)雜特性陨倡,集群自動(dòng)發(fā)現(xiàn)(cluster discovery)
cluster discovery:在集群內(nèi)啟動(dòng)了新的服務(wù),集群會(huì)自動(dòng)發(fā)現(xiàn)這個(gè)服務(wù)并把該服務(wù)加入進(jìn)來
② 自動(dòng)維護(hù)數(shù)據(jù)在多個(gè)節(jié)點(diǎn)上的建立
③ 搜索請(qǐng)求的負(fù)載均衡
④ 自動(dòng)維護(hù)冗余副本许布,保證了部分節(jié)點(diǎn)宕機(jī)的情況下仍然不會(huì)有任何數(shù)據(jù)丟失
⑤ ES基于Lucene提供了很多高級(jí)功能:復(fù)合查詢兴革、聚合分析、基于地理位置等蜜唾。
⑥ 對(duì)于大公司杂曲,可以構(gòu)建幾百臺(tái)服務(wù)器的大型分布式集群,處理PB級(jí)別數(shù)據(jù)袁余;對(duì)于小公司擎勘,開箱即用,門檻低上手簡(jiǎn)單颖榜。
⑦ 相遇傳統(tǒng)數(shù)據(jù)庫棚饵,提供了全文檢索,同義詞處理(美麗的>漂亮的)掩完,相關(guān)度排名噪漾。聚合分析以及海量數(shù)據(jù)的近實(shí)時(shí)(NTR)處理,這些傳統(tǒng)數(shù)據(jù)庫完全做不到且蓬。

(3) 應(yīng)用領(lǐng)域:

① 百度(全文檢索欣硼、高亮、搜索推薦)
② 各大網(wǎng)站的用戶行為日志(用戶點(diǎn)擊恶阴、瀏覽诈胜、收藏、評(píng)論)
③ BI(Business Intelligence商業(yè)智能)存淫,數(shù)據(jù)分析:數(shù)據(jù)挖掘統(tǒng)計(jì)耘斩。
④ Github:代碼托管平臺(tái),幾千億行代碼
⑤ ELK:Elasticsearch(數(shù)據(jù)存儲(chǔ))桅咆、Logstash(日志采集)括授、Kibana(可視化)

6、ES核心概念:

(1) cluster(集群):每個(gè)集群至少包含兩個(gè)節(jié)點(diǎn).
(2) node:集群中的每個(gè)節(jié)點(diǎn)岩饼,一個(gè)節(jié)點(diǎn)不代表一臺(tái)服務(wù)器
(3) field:一個(gè)數(shù)據(jù)字段荚虚,與index和type一起,可以定位一個(gè)doc
(4) document:ES最小的數(shù)據(jù)單元 Json
(5)Type:邏輯上的數(shù)據(jù)分類籍茧,es 7.x中刪除了type的概念
(6)Index:一類相同或者類似的doc版述,比如一個(gè)員工索引,商品索引寞冯。

{
    #document
    "id": "1",
    "name": "小米",
    "price": {
        "標(biāo)準(zhǔn)版": 3999,
        "尊享版": 4999,
        "吳磊簽名定制版": 19999
    }
}

Shard分片:

1:一個(gè)index包含多個(gè)Shard渴析,默認(rèn)5P(主分片)晚伙,默認(rèn)每個(gè)P分配一個(gè)R(從分片),P的數(shù)量在創(chuàng)建索引的時(shí)候設(shè)置俭茧,如果想修改咆疗,需要重建索引。
2:每個(gè)Shard都是一個(gè)Lucene實(shí)例母债,有完整的創(chuàng)建索引的處理請(qǐng)求能力午磁。
3:ES會(huì)自動(dòng)在nodes上為我們做shard 均衡。
4:一個(gè)doc是不可能同時(shí)存在于多個(gè)PShard中的毡们,但是可以存在于多個(gè)RShard中迅皇。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市衙熔,隨后出現(xiàn)的幾起案子登颓,更是在濱河造成了極大的恐慌,老刑警劉巖青责,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挺据,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡脖隶,警方通過查閱死者的電腦和手機(jī)扁耐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來产阱,“玉大人婉称,你說我怎么就攤上這事」沟牛” “怎么了王暗?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)庄敛。 經(jīng)常有香客問我俗壹,道長(zhǎng),這世上最難降的妖魔是什么藻烤? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任绷雏,我火速辦了婚禮,結(jié)果婚禮上怖亭,老公的妹妹穿的比我還像新娘涎显。我一直安慰自己,他們只是感情好兴猩,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布期吓。 她就那樣靜靜地躺著,像睡著了一般倾芝。 火紅的嫁衣襯著肌膚如雪讨勤。 梳的紋絲不亂的頭發(fā)上箭跳,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音悬襟,去河邊找鬼衅码。 笑死,一個(gè)胖子當(dāng)著我的面吹牛脊岳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播垛玻,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼割捅,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了帚桩?” 一聲冷哼從身側(cè)響起亿驾,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎账嚎,沒想到半個(gè)月后莫瞬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡郭蕉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年疼邀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片召锈。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡旁振,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出涨岁,到底是詐尸還是另有隱情拐袜,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布梢薪,位于F島的核電站蹬铺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏秉撇。R本人自食惡果不足惜甜攀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望畜疾。 院中可真熱鬧赴邻,春花似錦、人聲如沸啡捶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瞎暑。三九已至彤敛,卻和暖如春与帆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背墨榄。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工玄糟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人袄秩。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓阵翎,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親之剧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子郭卫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349