终于有人把Elasticsearch原理讲明白了!
轉(zhuǎn)載:http://www.sohu.com/a/306244095_463994
隨著央視詩詞大會的熱播,小史開始對詩詞感興趣,最喜歡的就是飛花令的環(huán)節(jié)。
但是由于小史很久沒有背過詩詞了,飛一個字很難說出一句,很多之前很熟悉的詩句也想不起來。
倒排索引
呂老師:但是我讓你說出帶“前”字的詩句,由于沒有索引,你只能遍歷腦海中所有詩詞,當(dāng)你的腦海中詩詞量大的時候,就很難在短時間內(nèi)得到結(jié)果了。
索引量爆炸
?
搜索引擎原理
Elasticsearch 簡介
呂老師:但是 Lucene 還是一個庫,必須要懂一點搜索引擎原理的人才能用的好,所以后來又有人基于 Lucene 進行封裝,寫出了 Elasticsearch。
Elasticsearch 基本概念
呂老師:類型是用來定義數(shù)據(jù)結(jié)構(gòu)的,你可以認為是 MySQL 中的一張表。文檔就是最終的數(shù)據(jù)了,你可以認為一個文檔就是一條記錄。
呂老師:比如一首詩,有詩題、作者、朝代、字?jǐn)?shù)、詩內(nèi)容等字段,那么首先,我們可以建立一個名叫 Poems 的索引,然后創(chuàng)建一個名叫 Poem 的類型,類型是通過 Mapping 來定義每個字段的類型。
比如詩題、作者、朝代都是 Keyword 類型,詩內(nèi)容是 Text 類型,而字?jǐn)?shù)是 Integer 類型,最后就是把數(shù)據(jù)組織成 Json 格式存放進去了。
呂老師:這個問題問得好,這涉及到分詞的問題,Keyword 類型是不會分詞的,直接根據(jù)字符串內(nèi)容建立反向索引,Text 類型在存入 Elasticsearch 的時候,會先分詞,然后根據(jù)分詞后的內(nèi)容建立反向索引。
呂老師:之前我們說過,Elasticsearch 把操作都封裝成了 HTTP 的 API,我們只要給 Elasticsearch 發(fā)送 HTTP 請求就行。
比如使用 curl -XPUT 'http://ip:port/poems',就能建立一個名為 Poems 的索引,其他操作也是類似的。
Elasticsearch 分布式原理
呂老師:沒錯,Elasticsearch 也是會對數(shù)據(jù)進行切分,同時每一個分片會保存多個副本,其原因和 HDFS 是一樣的,都是為了保證分布式環(huán)境下的高可用。
呂老師:沒錯,在 Elasticsearch 中,節(jié)點是對等的,節(jié)點間會通過自己的一些規(guī)則選取集群的 Master,Master 會負責(zé)集群狀態(tài)信息的改變,并同步給其他節(jié)點。
呂老師:注意,只有建立索引和類型需要經(jīng)過 Master,數(shù)據(jù)的寫入有一個簡單的 Routing 規(guī)則,可以 Route 到集群中的任意節(jié)點,所以數(shù)據(jù)寫入壓力是分散在整個集群的。
ELK 系統(tǒng)
呂老師:其實很多公司都用 Elasticsearch 搭建 ELK 系統(tǒng),也就是日志分析系統(tǒng)。其中 E 就是 Elasticsearch,L 是 Logstash,是一個日志收集系統(tǒng),K 是 Kibana,是一個數(shù)據(jù)可視化平臺。
呂老師:分析日志的用處可大了,你想,假如一個分布式系統(tǒng)有 1000 臺機器,系統(tǒng)出現(xiàn)故障時,我要看下日志,還得一臺一臺登錄上去查看,是不是非常麻煩?
呂老師:但是如果日志接入了 ELK 系統(tǒng)就不一樣。比如系統(tǒng)運行過程中,突然出現(xiàn)了異常,在日志中就能及時反饋,日志進入 ELK 系統(tǒng)中,我們直接在 Kibana 就能看到日志情況。如果再接入一些實時計算模塊,還能做實時報警功能。
總結(jié)
小史學(xué)完了 Elasticsearch,在筆記本上寫下了如下記錄:
- 反向索引又叫倒排索引,是根據(jù)文章內(nèi)容中的關(guān)鍵字建立索引。
- 搜索引擎原理就是建立反向索引。
- Elasticsearch 在 Lucene 的基礎(chǔ)上進行封裝,實現(xiàn)了分布式搜索引擎。
- Elasticsearch 中的索引、類型和文檔的概念比較重要,類似于 MySQL 中的數(shù)據(jù)庫、表和行。
- Elasticsearch 也是 Master-slave 架構(gòu),也實現(xiàn)了數(shù)據(jù)的分片和備份。
- Elasticsearch 一個典型應(yīng)用就是 ELK 日志分析系統(tǒng)。
寫完,又高高興興背詩去了。
觀書有感(朱熹)
半畝方塘一鑒開,天光云影共徘徊。
問渠那得清如許?為有源頭活水來。
作者:channingbreeze
編輯:陶家龍、孫淑娟
出處:轉(zhuǎn)載自微信公眾號:互聯(lián)網(wǎng)偵察
總結(jié)
以上是生活随笔為你收集整理的终于有人把Elasticsearch原理讲明白了!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (三)springcloud服务提供者实
- 下一篇: zImage与uImage的区别