Elasticsearch是什么?

Elasticsearch是什么?

數(shù)據(jù):文檔和索引

Elasticsearch是一個(gè)分布式文檔存儲(chǔ)夹供。Elasticsearch存儲(chǔ)的是序列化為JSON文檔的復(fù)雜數(shù)據(jù)結(jié)構(gòu),而不是以列行數(shù)據(jù)的形式存儲(chǔ)信息填渠。當(dāng)集群中有多個(gè)Elasticsearch節(jié)點(diǎn)時(shí)氛什,存儲(chǔ)的文檔分布在整個(gè)集群中,可以立即從任何節(jié)點(diǎn)訪(fǎng)問(wèn)枪眉。

當(dāng)存儲(chǔ)文檔時(shí)贸铜,它幾乎是實(shí)時(shí)的——在1秒內(nèi)就可以被索引和完全搜索聂受。Elasticsearch使用了一種名為反向索引的數(shù)據(jù)結(jié)構(gòu),它支持非常快速的全文搜索职车。反向索引列出任何文檔中出現(xiàn)的每個(gè)惟一單詞,并標(biāo)識(shí)每個(gè)單詞出現(xiàn)的所有文檔扛芽。

可以將索引看作是文檔的優(yōu)化集合积瞒,每個(gè)文檔是字段的集合茫孔,這些字段是包含數(shù)據(jù)的鍵值對(duì)。默認(rèn)情況下馍悟,Elasticsearch對(duì)每個(gè)字段中的所有數(shù)據(jù)進(jìn)行索引锣咒,每個(gè)索引字段都有一個(gè)專(zhuān)用的侵状、優(yōu)化的數(shù)據(jù)結(jié)構(gòu)趣兄。例如艇潭,文本字段存儲(chǔ)在倒排索引中承粤,數(shù)字和地理字段存儲(chǔ)在BKD樹(shù)中。使用每個(gè)字段的數(shù)據(jù)結(jié)構(gòu)來(lái)組裝和返回搜索結(jié)果的能力是Elasticsearch如此快速的原因

Elasticsearch還具有無(wú)模式的能力仙粱,這意味著可以對(duì)文檔進(jìn)行索引伐割,而不必顯式地指定如何處理文檔中可能出現(xiàn)的每個(gè)不同字段刃唤。當(dāng)動(dòng)態(tài)映射被啟用時(shí),Elasticsearch會(huì)自動(dòng)檢測(cè)并向索引添加新的字段硬霍。這種默認(rèn)行為使得創(chuàng)建索引和瀏覽數(shù)據(jù)變得很容易——只要開(kāi)始創(chuàng)建索引文檔唯卖,Elasticsearch就會(huì)檢測(cè)布爾值躬柬、浮點(diǎn)值和整數(shù)值、日期和字符串橄碾,并將它們映射到合適的Elasticsearch數(shù)據(jù)類(lèi)型颠锉。

但是琼掠,最終,您比Elasticsearch更了解您的數(shù)據(jù)以及您想如何使用它恶复。您可以定義規(guī)則來(lái)控制動(dòng)態(tài)映射,并顯式地定義映射來(lái)完全控制字段的存儲(chǔ)和索引方式副硅。

定義您自己的映射使您能夠:

區(qū)分全文字符串字段和精確值字符串字段
執(zhí)行特定于語(yǔ)言的文本分析
為部分匹配優(yōu)化字段
使用自定義日期格式
使用geo_point和geo_shape等不能自動(dòng)檢測(cè)的數(shù)據(jù)類(lèi)型

為不同的目的以不同的方式為同一個(gè)字段建立索引通常是很有用的恐疲。例如套么,您可能希望將字符串字段索引為全文搜索的文本字段和用于排序或聚合數(shù)據(jù)的關(guān)鍵字字段∈∽桑或者玷室,您可以選擇使用多個(gè)語(yǔ)言分析器來(lái)處理包含用戶(hù)輸入的字符串字段的內(nèi)容

在索引期間應(yīng)用于全文字段的分析鏈也在搜索時(shí)使用。當(dāng)查詢(xún)?nèi)淖侄螘r(shí)敌蜂,在索引中查找術(shù)語(yǔ)之前津肛,查詢(xún)文本會(huì)進(jìn)行相同的分析。

信息輸出:搜索和分析

雖然您可以使用Elasticsearch作為文檔存儲(chǔ)和檢索文檔及其元數(shù)據(jù)囊陡,但它的真正強(qiáng)大之處在于能夠輕松訪(fǎng)問(wèn)構(gòu)建在Apache Lucene搜索引擎庫(kù)上的全套搜索功能。

Elasticsearch提供了一個(gè)簡(jiǎn)單妥色、一致的REST API嘹害,用于管理集群、索引和搜索數(shù)據(jù)幢踏。出于測(cè)試目的许师,您可以直接從命令行或通過(guò)Kibana中的Developer Console輕松地提交請(qǐng)求。在應(yīng)用程序中咧擂,您可以使用Elasticsearch客戶(hù)端來(lái)選擇語(yǔ)言:Java、JavaScript松申、Go贸桶、. net皇筛、PHP识脆、Perl、Python或Ruby离例。

搜索你的數(shù)據(jù)

Elasticsearch REST api支持結(jié)構(gòu)化查詢(xún)宫蛆、全文查詢(xún)和結(jié)合這兩種查詢(xún)的復(fù)雜查詢(xún)耀盗。結(jié)構(gòu)化查詢(xún)類(lèi)似于您可以在SQL中構(gòu)造的查詢(xún)類(lèi)型卦尊。例如岂却,您可以在雇員索引中搜索性別和年齡字段,并根據(jù)hire_date字段對(duì)匹配項(xiàng)進(jìn)行排序署浩。全文查詢(xún)查找與查詢(xún)字符串匹配的所有文檔筋栋,并根據(jù)相關(guān)度(它們與搜索詞的匹配程度)返回它們。

除了搜索單個(gè)術(shù)語(yǔ)外弊攘,您還可以執(zhí)行短語(yǔ)搜索肴颊、相似度搜索和前綴搜索婿着,并獲得自動(dòng)補(bǔ)全建議。

是否有想要搜索的地理空間數(shù)據(jù)或其他數(shù)字?jǐn)?shù)據(jù)?Elasticsearch在優(yōu)化的數(shù)據(jù)結(jié)構(gòu)中對(duì)非文本數(shù)據(jù)進(jìn)行索引提完,支持高性能的地理和數(shù)字查詢(xún)徒欣。

您可以使用Elasticsearch的全面的json風(fēng)格的查詢(xún)語(yǔ)言(query DSL)訪(fǎng)問(wèn)所有這些搜索功能打肝。您還可以構(gòu)造SQL風(fēng)格的查詢(xún)來(lái)在Elasticsearch內(nèi)部本地搜索和聚合數(shù)據(jù)粗梭,JDBC和ODBC驅(qū)動(dòng)程序允許許多第三方應(yīng)用程序通過(guò)SQL與Elasticsearch交互断医。

分析你的數(shù)據(jù)

Elasticsearch聚合使您能夠構(gòu)建復(fù)雜的數(shù)據(jù)總結(jié),并洞察關(guān)鍵指標(biāo)鉴嗤、模式和趨勢(shì)醉锅。不只是尋找眾所周知的“大海撈針”发绢,聚合使您能夠回答這樣的問(wèn)題:

How many needles are in the haystack?
What is the average length of the needles?
What is the median length of the needles, broken down by manufacturer?
How many needles were added to the haystack in each of the last six months?

您還可以使用聚合來(lái)回答更微妙的問(wèn)題,例如

What are your most popular needle manufacturers?
Are there any unusual or anomalous clumps of needles?

因?yàn)榫酆侠昧擞糜谒阉鞯南嗤瑪?shù)據(jù)結(jié)構(gòu)甚纲,所以它們也非常快朦前。這使您能夠?qū)崟r(shí)分析和可視化數(shù)據(jù)介杆。您的報(bào)告和儀表板會(huì)隨著數(shù)據(jù)的更改而更新鹃操,因此您可以根據(jù)最新的信息采取行動(dòng)。

What’s more, aggregations operate alongside search requests. You can search documents, filter results, and perform analytics at the same time, on the same data, in a single request. And because aggregations are calculated in the context of a particular search, you’re not just displaying a count of all size 70 needles, you’re displaying a count of the size 70 needles that match your users' search criteria—for example, all size 70 non-stick embroidery needles

可伸縮性和彈性: 集群春哨、節(jié)點(diǎn)和分片

Elasticsearch始終可用荆隘,并可根據(jù)您的需求進(jìn)行擴(kuò)展。它通過(guò)自然分配來(lái)做到這一點(diǎn)赴背。您可以將服務(wù)器(節(jié)點(diǎn))添加到集群中以增加容量椰拒,Elasticsearch會(huì)自動(dòng)將您的數(shù)據(jù)和查詢(xún)負(fù)載分布到所有可用的節(jié)點(diǎn)上。Elasticsearch不需要徹底檢查應(yīng)用程序凰荚,它知道如何平衡多節(jié)點(diǎn)集群以提供規(guī)娜脊郏化和高可用性。節(jié)點(diǎn)越多越快樂(lè)

這是如何工作的呢?實(shí)際上便瑟,Elasticsearch索引只是一個(gè)或多個(gè)物理碎片的邏輯分組缆毁,其中每個(gè)碎片實(shí)際上是一個(gè)自包含的索引践啄。通過(guò)將索引中的文檔分布到多個(gè)分片上箫爷,并將這些分片分布到多個(gè)節(jié)點(diǎn)上虎锚,Elasticsearch可以確保冗余非春,既可以防止硬件故障护侮,又可以隨著節(jié)點(diǎn)添加到集群中而增加查詢(xún)?nèi)萘俊kS著集群的增長(zhǎng)(或收縮),Elasticsearch會(huì)自動(dòng)遷移碎片來(lái)重新平衡集群

有兩種類(lèi)型的分片:基本分片和復(fù)制分片。索引中的每個(gè)文檔都屬于一個(gè)主分片栋操。復(fù)制分片是主分片的副本。副本提供數(shù)據(jù)的冗余副本,以防止硬件故障歼跟,并增加服務(wù)讀取請(qǐng)求(如搜索或檢索文檔)的容量骚秦。

索引中主分片的數(shù)量在索引創(chuàng)建時(shí)是固定的,但是復(fù)制分片的數(shù)量可以在不中斷索引或查詢(xún)操作的情況下隨時(shí)改變。

取決于

關(guān)于分片大小和為索引配置的主分片數(shù)量阶剑,有許多性能方面的考慮和權(quán)衡外莲。碎片越多办龄,維護(hù)這些索引的開(kāi)銷(xiāo)就越大英融。碎片的大小越大,當(dāng)Elasticsearch需要重新平衡集群時(shí),移動(dòng)碎片所需的時(shí)間就越長(zhǎng)笼呆。

查詢(xún)大量的小分片可以使每個(gè)分片的處理速度更快铭若,但是查詢(xún)?cè)蕉嘁馕吨_(kāi)銷(xiāo)越大非迹,因此查詢(xún)少量的大分片可能會(huì)更快∥靼總之咆畏,這要看情況。

作為起點(diǎn):
目標(biāo)是將平均碎片大小保持在幾GB到幾十GB之間。對(duì)于基于時(shí)間的數(shù)據(jù)的用例甸饱,通常會(huì)看到20GB到 40GB范圍的分片搞动。
避免大量碎片的問(wèn)題箩溃。一個(gè)節(jié)點(diǎn)可以容納的分片數(shù)量與可用堆空間成正比。作為一般規(guī)則止状,每GB堆空間的碎片數(shù)量應(yīng)該小于20個(gè)伏社。

為您的用例確定最佳配置的最佳方法是通過(guò)使用您自己的數(shù)據(jù)和查詢(xún)進(jìn)行測(cè)試买优。

萬(wàn)一發(fā)生災(zāi)難

出于性能原因梧喷,集群內(nèi)的節(jié)點(diǎn)需要位于同一個(gè)網(wǎng)絡(luò)上。在不同數(shù)據(jù)中心的節(jié)點(diǎn)之間平衡集群中的分片花費(fèi)的時(shí)間太長(zhǎng)了胶果。但是高可用性架構(gòu)要求您避免把所有雞蛋放在一個(gè)籃子里悬垃。當(dāng)一個(gè)位置發(fā)生重大故障時(shí)扇谣,另一個(gè)位置的服務(wù)器需要能夠接管簸淀。無(wú)縫男窟。答案嗎?Cross-cluster復(fù)制(CCR)畏纲。

CCR提供了一種從主集群自動(dòng)同步索引到可作為熱備份的輔助遠(yuǎn)程集群的方法。如果主集群故障,輔助集群可以接管夫晌。您還可以使用CCR創(chuàng)建輔助集群凶掰,以服務(wù)于與用戶(hù)地理位置相近的讀請(qǐng)求前翎。

跨集群復(fù)制是主備復(fù)制毅戈。主集群上的索引是活動(dòng)領(lǐng)導(dǎo)索引,并處理所有寫(xiě)請(qǐng)求。復(fù)制到次要集群的索引是只讀的追隨者奠旺。

護(hù)理和喂養(yǎng)

與任何企業(yè)系統(tǒng)一樣忿晕,您需要工具來(lái)保護(hù)咕幻、管理和監(jiān)視您的Elasticsearch集群。安全狐粱、監(jiān)控和管理特性集成到Elasticsearch中,使您能夠使用Kibana作為管理集群的控制中心豆挽。數(shù)據(jù)匯總和索引生命周期管理等特性可以幫助您隨著時(shí)間的推移智能地管理數(shù)據(jù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末育谬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子帮哈,更是在濱河造成了極大的恐慌膛檀,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娘侍,死亡現(xiàn)場(chǎng)離奇詭異咖刃,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)憾筏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)嚎杨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人氧腰,你說(shuō)我怎么就攤上這事磕潮。” “怎么了容贝?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵自脯,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我斤富,道長(zhǎng)膏潮,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任满力,我火速辦了婚禮焕参,結(jié)果婚禮上轻纪,老公的妹妹穿的比我還像新娘。我一直安慰自己叠纷,他們只是感情好刻帚,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著涩嚣,像睡著了一般崇众。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上航厚,一...
    開(kāi)封第一講書(shū)人閱讀 51,115評(píng)論 1 296
  • 那天顷歌,我揣著相機(jī)與錄音,去河邊找鬼幔睬。 笑死眯漩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的麻顶。 我是一名探鬼主播赦抖,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼辅肾!你這毒婦竟也來(lái)了队萤?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤宛瞄,失蹤者是張志新(化名)和其女友劉穎浮禾,沒(méi)想到半個(gè)月后交胚,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體份汗,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年蝴簇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了杯活。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡熬词,死狀恐怖旁钧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情互拾,我是刑警寧澤歪今,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站颜矿,受9級(jí)特大地震影響寄猩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜骑疆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一田篇、第九天 我趴在偏房一處隱蔽的房頂上張望替废。 院中可真熱鬧,春花似錦泊柬、人聲如沸椎镣。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)状答。三九已至,卻和暖如春闸氮,著一層夾襖步出監(jiān)牢的瞬間剪况,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工蒲跨, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留译断,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓或悲,卻偏偏與公主長(zhǎng)得像孙咪,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子巡语,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353