elasticsearch入門篇

原文先發(fā)于:https://mp.weixin.qq.com/s/0cTaqiYSJ1Pr9jBEVYfKHw

一、elasticsearch背后有趣的故事

許多年前,一個剛結(jié)婚的名叫 Shay Banon 的失業(yè)開發(fā)者碎罚,跟著他的妻子去了倫敦扮授,他的妻子在那里學(xué)習(xí)廚師蚜迅。 在尋找一個賺錢的工作的時候英岭,為了給他的妻子做一個食譜搜索引擎哟绊,他開始使用 Lucene 的一個早期版本铜跑。直接使用 Lucene 是很難的门怪,因此 Shay 開始做一個抽象層,Java 開發(fā)者使用它可以很簡單的給他們的程序添加搜索功能锅纺。 他發(fā)布了他的第一個開源項目 Compass掷空。后來 Shay 獲得了一份工作,主要是高性能囤锉,分布式環(huán)境下的內(nèi)存數(shù)據(jù)網(wǎng)格坦弟。這個對于高性能,實時官地,分布式搜索引擎的需求尤為突出酿傍, 他決定重寫 Compass,把它變?yōu)橐粋€獨(dú)立的服務(wù)并取名 Elasticsearch驱入。

第一個公開版本在2010年2月發(fā)布赤炒,從此以后,Elasticsearch 已經(jīng)成為了 Github 上最活躍的項目之一亏较,他擁有超過300名 contributors(目前736名 contributors )莺褒。 一家公司已經(jīng)開始圍繞 Elasticsearch 提供商業(yè)服務(wù),并開發(fā)新的特性宴杀,但是癣朗,Elasticsearch 將永遠(yuǎn)開源并對所有人可用。

據(jù)說旺罢,Shay 的妻子還在等著她的食譜搜索引擎…

二旷余、elasticsearch簡介

Elasticsearch 是一個開源的搜索引擎,建立在一個全文搜索引擎庫 Apache Lucene? 基礎(chǔ)之上扁达。 Lucene 可以說是當(dāng)下最先進(jìn)正卧、高性能、全功能的搜索引擎庫--無論是開源還是私有跪解。但是 Lucene 僅僅只是一個庫炉旷。為了充分發(fā)揮其功能,你需要使用 Java 并將 Lucene 直接集成到應(yīng)用程序中。 更糟糕的是窘行,您可能需要獲得信息檢索學(xué)位才能了解其工作原理饥追。Lucene 非常 復(fù)雜。Elasticsearch 也是使用 Java 編寫的罐盔,它的內(nèi)部使用 Lucene 做索引與搜索但绕,但是它的目的是使全文檢索變得簡單, 通過隱藏 Lucene 的復(fù)雜性惶看,取而代之的提供一套簡單一致的 RESTful API捏顺。然而,Elasticsearch 不僅僅是 Lucene纬黎,并且也不僅僅只是一個全文搜索引擎幅骄。 它可以被下面這樣準(zhǔn)確的形容:

  1. 一個分布式的實時文檔存儲,每個字段 可以被索引與搜索
  2. 一個分布式實時分析搜索引擎
  3. 能勝任上百個服務(wù)節(jié)點的擴(kuò)展本今,并支持 PB 級別的結(jié)構(gòu)化或者非結(jié)構(gòu)化數(shù)據(jù)

2.1拆座、elasticsearch功能

  • 分布式的搜索引擎

es可作為一個分布式的搜索引擎,例如百度冠息,淘寶的商品搜索懂拾,一般web系統(tǒng)的站內(nèi)搜索,es都是不錯的技術(shù)選型铐达。

  • 數(shù)據(jù)分析引擎

es在搜索的基礎(chǔ)上提供了豐富的API支持個性化的搜索和數(shù)據(jù)分析功能,比如電商網(wǎng)站檬果,我們可以查詢最近幾天的熱銷商品等瓮孙。

  • 對海量數(shù)據(jù)進(jìn)行近實時的處理

es是一個分布式的搜索引擎,es通過集群和內(nèi)部分片可以將海量數(shù)據(jù)分散到多臺服務(wù)器上進(jìn)行存儲和檢索选脊,大大提高了其可伸縮性和容災(zāi)能力杭抠。
所謂近實時是一個相對的概念,一般的如果相應(yīng)速度能達(dá)到秒級別恳啥,我們就稱為其實近實時的偏灿。es的近實時包括兩個方面:其一寫入的數(shù)據(jù)在1s后就可以進(jìn)行檢索。其二其檢索和分析響應(yīng)速度可以達(dá)到秒級別钝的。

2.2翁垂、elasticsearch的特點

  • 分布式

es是一個分布式的搜索引擎,可以很好的進(jìn)行數(shù)據(jù)的容災(zāi)遷移硝桩,動態(tài)擴(kuò)容沿猜,負(fù)載均衡等分布式特性。

  • 海量數(shù)據(jù)

es能處理PB級別的數(shù)據(jù)碗脊,因為es是一個分布式的架構(gòu)啼肩,支持動態(tài)擴(kuò)容,所以對于海量數(shù)據(jù)的處理和存儲都不再是問題。

三祈坠、elasticsearch的幾個基礎(chǔ)概念

es中數(shù)據(jù)的基礎(chǔ)概念

  • index

索引(index)類似于關(guān)系型數(shù)據(jù)庫里的“數(shù)據(jù)庫”——它是我們存儲和索引關(guān)聯(lián)數(shù)據(jù)的地方害碾。

提示:

事實上,我們的數(shù)據(jù)被存儲和索引在分片(shards)中赦拘,索引只是一個把一個或多個分片分組在一起的邏輯空間慌随。然而,這只是一些內(nèi)部細(xì)節(jié)——我們的程序完全不用關(guān)心分 片另绩。對于我們的程序而言儒陨,文檔存儲在索引(index)中。
剩下的細(xì)節(jié)由Elasticsearch關(guān)心 既可笋籽。

  • type

type的概念類似于MySql中表的概念蹦漠。

在應(yīng)用中,我們使用對象表示一些“事物”车海,例如一個用戶笛园、一篇博客、一個評論侍芝,或者一封郵 件研铆。每個對象都屬于一個類(class),這個類定義了屬性或與對象關(guān)聯(lián)的數(shù)據(jù)州叠。 user 類的對象 可能包含姓名棵红、性別、年齡和Email地址咧栗。 在關(guān)系型數(shù)據(jù)庫中逆甜,我們經(jīng)常將相同類的對象存儲在一個表里,因為它們有著相同的結(jié)構(gòu)致板。 同理交煞,在Elasticsearch中,我們使用相同類型(type)的文檔表示相同的“事物”斟或,因為他們的數(shù) 據(jù)結(jié)構(gòu)也是相同的素征。 每個類型(type)都有自己的映射(mapping)或者結(jié)構(gòu)定義,就像傳統(tǒng)數(shù)據(jù)庫表中的列一樣萝挤。所 有類型下的文檔被存儲在同一個索引下御毅,但是類型的映射(mapping)會告訴Elasticsearch不同 的文檔如何被索引。 我們將會在《映射》章節(jié)探討如何定義和管理映射怜珍,但是現(xiàn)在我們將依 賴Elasticsearch去自動處理數(shù)據(jù)結(jié)構(gòu)亚享。

  • document

document是es的基本索引單元,document類似于MySql中的一行記錄绘面。document的數(shù)據(jù)是json格式欺税。

  • id

在MySql中我們使用主鍵表示一條記錄的唯一性侈沪,在es中id就是這種概念。在es中id同樣可以是自產(chǎn)生的晚凿,es自動生成的ID具備以下特點:自動生成的是 url安全的亭罪,base64編碼,GUID歼秽,保證分布式下ID不沖突(全局唯一ID)应役。當(dāng)然也可以我們自己來指定。

2燥筷,es在分布式下的幾個概念

  • Cluster(集群):

相信熟悉分布式的小伙伴對這個Cluster都不會陌生箩祥,Cluster表示es的一個集群,所謂集群就是有好多es組合成的一個分布式下的es集群肆氓。

  • node(節(jié)點):

node就是es集群(Cluster)中的一個es節(jié)點就稱為node袍祖。簡單來說可以理解成一個es實例就是該集群中的一個節(jié)點。

3谢揪,es存儲策略上的兩個概念

  • shard(分片)和 replica:

為了將數(shù)據(jù)添加到Elasticsearch蕉陋,我們需要索引(index)——一個存儲關(guān)聯(lián)數(shù)據(jù)的地方。實際 上拨扶,索引只是一個用來指向一個或多個分片(shards)的“邏輯命名空間(logical namespace)”. 一個分片(shard)是一個最小級別“工作單元(worker unit)”,它只是保存了索引中所有數(shù)據(jù)的一 部分凳鬓。

道分片就是一個Lucene實例,并且它本身就是一個完整的搜索引擎患民。我們的文檔存儲在分片中缩举,并且在分片中被索引,但是我們的應(yīng)用程序不會直接與它們通信匹颤,取而代之的是蚁孔,直接與索引通信。 分片是Elasticsearch在集群中分發(fā)數(shù)據(jù)的關(guān)鍵惋嚎。把分片想象成數(shù)據(jù)的容器。文檔存儲在分片中站刑,然后分片分配到你集群中的節(jié)點上另伍。當(dāng)你的集群擴(kuò)容或縮小,Elasticsearch將會自動在你的節(jié)點間遷移分片绞旅,以使集群保持平衡摆尝。 分片可以是主分片(primary shard)或者是復(fù)制分片(replica shard)。

你索引中的每個文檔屬于一個單獨(dú)的主分片因悲,所以主分片的數(shù)量決定了索引最多能存儲多少數(shù)據(jù)堕汞。 理論上主分片能存儲的數(shù)據(jù)大小是沒有限制的,限制取決于你實際的使用情況晃琳。分片的最大容量完全取決于你的使用狀況:硬件存儲的大小讯检、文檔的大小和復(fù)雜度琐鲁、如何索引 和查詢你的文檔,以及你期望的響應(yīng)時間人灼。

復(fù)制分片只是主分片的一個副本围段,它可以防止硬件故障導(dǎo)致的數(shù)據(jù)丟失,同時可以提供讀請 求投放,比如搜索或者從別的shard取回文檔奈泪。 當(dāng)索引創(chuàng)建完成的時候,主分片的數(shù)量就固定了灸芳,但是復(fù)制分片的數(shù)量可以隨時調(diào)整涝桅。 默認(rèn)情況下,一個索引被分配5個主分片烙样,一個主分片默認(rèn)只有一個復(fù)制分片冯遂。

重點:

shard分為兩種:

  1. primary shard --- 主分片
  2. replica shard --- 復(fù)制分片(或者稱為備份分片或者副本分片)

需要注意的是,在業(yè)界有一個約定俗稱的東西误阻,單說一個單詞shard一般指的是primary shard债蜜,而單說一個單詞replica就是指的replica shard。

另外一個需要注意的是replica shard是相對于索引而言的究反,如果說當(dāng)前index有一個復(fù)制分片寻定,那么相對于主分片來說就是每一個主分片都有一個復(fù)制分片,即如果有5個主分片就有5個復(fù)制分片精耐,并且主分片和復(fù)制分片之間是一一對應(yīng)的關(guān)系狼速。

很重要的一點:primary shard不能和replica shard在同一個節(jié)點上。重要的事情說三遍:

primary shard不能和replica shard在同一個節(jié)點上
primary shard不能和replica shard在同一個節(jié)點上
primary shard不能和replica shard在同一個節(jié)點上

所以es最小的高可用配置為兩臺服務(wù)器卦停。

四向胡、elasticsearch的安裝和開發(fā)工具

  • 本人安裝的是elasticsearch-6.6.2版本

  • 開發(fā)工具:kibana-6.6.2(注意kibana的版本一定要和elasticsearch的版本一致)

另外本地還配置了另一個開發(fā)工具:elasticsearch-head

安裝方式,大家去百度一下惊完,有很多很詳細(xì)的安裝步驟僵芹,在這里就不在贅述了。

簡單貼一張圖關(guān)于如何在kibana中執(zhí)行curl

[圖片上傳失敗...(image-a93b57-1617512883461)]

四小槐、集群健康狀態(tài)

Elasticsearch 的集群監(jiān)控信息中包含了許多的統(tǒng)計數(shù)據(jù)拇派,其中最為重要的一項就是集群健康,它在 status 字段中展示為 green 凿跳、 yellow 或者 red件豌。

在kibana中執(zhí)行:GET /_cat/health?v

1 epoch      timestamp cluster        status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
2 1568794410 08:13:30  my-application yellow          1         1     47  47    0    0       40             0                  -                 54.0%

其中我們可以看到當(dāng)前我本地的集群健康狀態(tài)是yellow ,但這里問題來了控嗜,集群的健康狀況是如何進(jìn)行判斷的呢茧彤?

  • green(很健康)
    所有的主分片和副本分片都正常運(yùn)行。
  • yellow(亞健康)
    所有的主分片都正常運(yùn)行疆栏,但不是所有的副本分片都正常運(yùn)行曾掂。
  • red(不健康)
    有主分片沒能正常運(yùn)行惫谤。

注意:

我本地只配置了一個單節(jié)點的elasticsearch,因為primary shard和replica shard是不能分配到一個節(jié)點上的所以遭殉,在我本地的elasticsearch中是不存在replica shard的石挂,所以健康狀況為yellow。

文章也會持續(xù)更新险污,可以微信搜索「 邁莫coding 」第一時間閱讀

原文地址:https://www.cnblogs.com/hello-shf/p/11543408.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末痹愚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蛔糯,更是在濱河造成了極大的恐慌拯腮,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蚁飒,死亡現(xiàn)場離奇詭異动壤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)淮逻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門琼懊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人爬早,你說我怎么就攤上這事哼丈。” “怎么了筛严?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵醉旦,是天一觀的道長。 經(jīng)常有香客問我桨啃,道長车胡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任照瘾,我火速辦了婚禮匈棘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘析命。我一直安慰自己主卫,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布碳却。 她就那樣靜靜地躺著,像睡著了一般笑旺。 火紅的嫁衣襯著肌膚如雪昼浦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天筒主,我揣著相機(jī)與錄音关噪,去河邊找鬼鸟蟹。 笑死,一個胖子當(dāng)著我的面吹牛使兔,可吹牛的內(nèi)容都是我干的建钥。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼虐沥,長吁一口氣:“原來是場噩夢啊……” “哼熊经!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起欲险,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤镐依,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后天试,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體槐壳,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年喜每,在試婚紗的時候發(fā)現(xiàn)自己被綠了务唐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡带兜,死狀恐怖枫笛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鞋真,我是刑警寧澤崇堰,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站涩咖,受9級特大地震影響海诲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜檩互,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一特幔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧闸昨,春花似錦蚯斯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至循诉,卻和暖如春横辆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背茄猫。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工狈蚤, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留困肩,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓脆侮,卻偏偏與公主長得像锌畸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子靖避,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

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

  • 介紹 elasticsearch是一個高效的潭枣、可擴(kuò)展的全文搜索引擎 基本概念 Near Realtime(NRT)...
    imsilence閱讀 778評論 0 0
  • 1.ElasticSearch的簡介 Elasticsearch的特點 1)可以作為一個大型分布式集群(數(shù)百臺服務(wù)...
    __元昊__閱讀 30,525評論 3 30
  • 所謂搜索引擎 搜索程序一般由索引鏈及搜索組件組成。索引鏈功能的實現(xiàn)需要按照幾個獨(dú)立的步驟依次完成:檢索原始內(nèi)容筋蓖、根...
    zfylin閱讀 134評論 0 1
  • 一卸耘、ElasticSearch概述 1. 概念闡述 ES(ElasticSearch)是一款非常強(qiáng)大的開源搜索引擎...
    WardWu閱讀 1,478評論 0 0
  • 一蚣抗、Elasticsearch入門 1. Elasticsearch簡介 Elasticsearch是什么 Ela...
    布萊安托閱讀 413評論 0 1