ES既是搜索引擎又是數(shù)據(jù)庫(kù)?真的有那么全能嗎?
作者介紹
李猛(ynuosoft),Elastic-stack產(chǎn)品深度用戶,ES認(rèn)證工程師,2012年接觸Elasticsearch,對(duì)Elastic-Stack開(kāi)發(fā)、架構(gòu)、運(yùn)維等方面有深入體驗(yàn),實(shí)踐過(guò)多種Elasticsearch項(xiàng)目,最暴力的大數(shù)據(jù)分析應(yīng)用,最復(fù)雜的業(yè)務(wù)系統(tǒng)應(yīng)用;業(yè)余為企業(yè)提供Elastic-stack咨詢培訓(xùn)以及調(diào)優(yōu)實(shí)施。
經(jīng)常遇到很多朋友詢問(wèn),如何學(xué)好Elasticsearch?這個(gè)問(wèn)題本質(zhì)上很不好回答,但我一直又很想好好回答,所以本文就以我個(gè)人的經(jīng)驗(yàn)視角,跟大家探討一下如何正確的擁抱Elasticsearch。若有不當(dāng)之處,歡迎留言指正。
Elasticsearch是什么,不同的人有不同的理解定位,之前寫(xiě)過(guò)Elasticsearch對(duì)比其它數(shù)據(jù)產(chǎn)品的文章《Elasticsearch對(duì)壘8大競(jìng)品技術(shù),孰優(yōu)孰劣?》,看了文章下面的評(píng)論,很多人定位它是搜索引擎,我覺(jué)得也很片面,下面就談?wù)勎业恼J(rèn)知:
1)Elasticsearch是搜索引擎
Elasticsearch在搜索引擎數(shù)據(jù)庫(kù)領(lǐng)域排名絕對(duì)第一,內(nèi)核基于Lucene構(gòu)建,支持全文搜索是職責(zé)所在,提供了豐富友好的API。個(gè)人早期基于Lucene構(gòu)建搜索應(yīng)用,需要考慮的因素太多,自接觸到Elasticsearch就再無(wú)自主開(kāi)發(fā)搜索應(yīng)用。普通工程師要想掌控Lucene需要一些代價(jià),且很多機(jī)制并不完善,需要做大量的周邊輔助程序,而Elasticsearch幾乎都已經(jīng)幫你做完了。
2)Elasticsearch不是搜索引擎
說(shuō)它不是搜索引擎,估計(jì)很多從業(yè)者不認(rèn)可,在個(gè)人涉及到的項(xiàng)目中,傳統(tǒng)意義上用Elasticsearch來(lái)做全文檢索的項(xiàng)目占比越來(lái)越少,多數(shù)時(shí)候是用來(lái)做精確查詢加速,查詢條件很多,可以任意組合,查詢速度很快,替代其它很多數(shù)據(jù)庫(kù)復(fù)雜條件查詢的場(chǎng)景需求;甚至有的數(shù)據(jù)庫(kù)產(chǎn)品直接使用Elasticsearch做二級(jí)索引,如HBase、Redis等。Elasticsearch由于自身的一些特性,更像一個(gè)多模數(shù)據(jù)庫(kù)。
圖示:Elasticsearch綜合數(shù)據(jù)庫(kù)排名熱度已經(jīng)到第7
3)Elasticsearch是數(shù)據(jù)庫(kù)
Elasticsearch使用Json格式來(lái)承載數(shù)據(jù)模型,已經(jīng)成為事實(shí)上的文檔型數(shù)據(jù)庫(kù),雖然底層存儲(chǔ)不是Json格式,同類(lèi)型產(chǎn)品有大名鼎鼎的MongoDB,不過(guò)二者在產(chǎn)品定位上有差別,Elasticsearch更加擅長(zhǎng)的基于查詢搜索的分析型數(shù)據(jù)庫(kù),傾向OLAP;MongoDB定位于事務(wù)型應(yīng)用層面OLTP,雖然也支持?jǐn)?shù)據(jù)分析,筆者簡(jiǎn)單應(yīng)用過(guò)之后再無(wú)使用,誰(shuí)用誰(shuí)知道。
4)Elasticsearch不是數(shù)據(jù)庫(kù)
Elasticsearch不是關(guān)系型數(shù)據(jù)庫(kù),內(nèi)部數(shù)據(jù)更新采用樂(lè)觀鎖,無(wú)嚴(yán)格的ACID事務(wù)特性,任何企圖將它用在關(guān)系型數(shù)據(jù)庫(kù)場(chǎng)景的應(yīng)用都會(huì)有很多問(wèn)題,很多其它領(lǐng)域的從業(yè)者喜歡拿這個(gè)來(lái)作為它的缺陷,重申這不是Elasticsearch的本質(zhì)缺陷,是產(chǎn)品設(shè)計(jì)定位如此。
圖示:Elastic擅長(zhǎng)的應(yīng)用場(chǎng)景
Elasticsearch雖然是基于Lucene構(gòu)建,但應(yīng)用領(lǐng)域確實(shí)非常寬泛。
1)全文檢索
Elasticsearch靠全文檢索起步,將Lucene開(kāi)發(fā)包做成一個(gè)數(shù)據(jù)產(chǎn)品,屏蔽了Lucene各種復(fù)雜的設(shè)置,為開(kāi)發(fā)人員提供了很友好的便利。很多傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)也提供全文檢索,有的是基于Lucene內(nèi)嵌,有的是基于自研,與Elasticsearch比較起來(lái),功能單一,性能也表現(xiàn)不是很好,擴(kuò)展性幾乎沒(méi)有。
如果,你的應(yīng)用有全文檢索需求,建議你優(yōu)先遷移到Elasticsearch平臺(tái)上來(lái),其提供豐富的Full text queries會(huì)讓你驚訝,一次用爽,一直用爽。
圖示:Elasticsearch官方搜索文檔
2)應(yīng)用查詢
Elasticsearch最擅長(zhǎng)的就是查詢,基于倒排索引核心算法,查詢性能強(qiáng)于B-Tree類(lèi)型所有數(shù)據(jù)產(chǎn)品,尤其是關(guān)系型數(shù)據(jù)庫(kù)方面。當(dāng)數(shù)據(jù)量超過(guò)千萬(wàn)或者上億時(shí),數(shù)據(jù)檢索的效率非常明顯。
個(gè)人更看中的是Elasticsearch在通用查詢應(yīng)用場(chǎng)景,關(guān)系型數(shù)據(jù)庫(kù)由于索引的左側(cè)原則限制,索引執(zhí)行必須有嚴(yán)格的順序,如果查詢字段很少,可以通過(guò)創(chuàng)建少量索引提高查詢性能,如果查詢字段很多且字段無(wú)序,那索引就失去了意義;相反Elasticsearch是默認(rèn)全部字段都會(huì)創(chuàng)建索引,且全部字段查詢無(wú)需保證順序,所以我們?cè)跇I(yè)務(wù)應(yīng)用系統(tǒng)中,大量用Elasticsearch替代關(guān)系型數(shù)據(jù)庫(kù)做通用查詢,自此之后對(duì)于關(guān)系型數(shù)據(jù)庫(kù)的查詢就很排斥,除了最簡(jiǎn)單的查詢,其余的復(fù)雜條件查詢?nèi)孔逧lasticsearch。
3)大數(shù)據(jù)領(lǐng)域
Elasticserach已經(jīng)成為大數(shù)據(jù)平臺(tái)對(duì)外提供查詢的重要組成部分之一。大數(shù)據(jù)平臺(tái)將原始數(shù)據(jù)經(jīng)過(guò)迭代計(jì)算,之后結(jié)果輸出到一個(gè)數(shù)據(jù)庫(kù)提供查詢,特別是大批量的明細(xì)數(shù)據(jù)。
這里會(huì)面臨幾個(gè)問(wèn)題,一個(gè)問(wèn)題是大批量明細(xì)數(shù)據(jù)的輸出,如何能在極短的時(shí)間內(nèi)寫(xiě)到數(shù)據(jù)庫(kù),傳統(tǒng)上很多數(shù)據(jù)平臺(tái)選擇關(guān)系型數(shù)據(jù)庫(kù)提供查詢,比如MySQL,之前在這方面吃過(guò)不少虧,瞬間寫(xiě)入性能極差,根本無(wú)法滿足要求。另一個(gè)問(wèn)題是對(duì)外查詢,如何能像應(yīng)用系統(tǒng)一樣提供性能極好的查詢,不限制查詢條件,不限制字段順序,支持較高的并發(fā),支持海量數(shù)據(jù)快速檢索,也只有Elasticsearch能夠做到比較均衡的檢索。
從官方的發(fā)布版本新特性來(lái)看,Elasticseacrch志在大數(shù)據(jù)分析領(lǐng)域,提供了基于列示存儲(chǔ)的數(shù)據(jù)聚合,支持的聚合功能非常多,性能表現(xiàn)也不錯(cuò),筆者有幸之前大規(guī)模深度使用過(guò),頗有感受。
Elasticsearch為了深入數(shù)據(jù)分析領(lǐng)域,產(chǎn)品又提供了數(shù)據(jù)Rollup與數(shù)據(jù)Transform功能,讓檢索分析更上一層樓。在數(shù)據(jù)Rollup領(lǐng)域,Apache Druid的競(jìng)爭(zhēng)能力很強(qiáng),筆者之前做過(guò)一些對(duì)比,單純的比較確實(shí)不如Druid,但自Elasticsearch增加了Transfrom功能,且單獨(dú)創(chuàng)建了一個(gè)Transfrom的節(jié)點(diǎn)角色,個(gè)人更加看好Elasticseach,跳出了Rollup基于時(shí)間序列的限制。
圖示:Rollup執(zhí)行過(guò)程數(shù)據(jù)轉(zhuǎn)換示意圖
4)日志檢索
著名的ELK三件套,講的就是Elasticsearch,Logstash,Kibana,專(zhuān)門(mén)針對(duì)日志采集、存儲(chǔ)、查詢?cè)O(shè)計(jì)的產(chǎn)品組合。很多第一次接觸到Elasticsearch的朋友,都會(huì)以為Elasticsearch是專(zhuān)門(mén)做日志的,其實(shí)這些都是誤解,只是說(shuō)它很擅長(zhǎng)這個(gè)領(lǐng)域,在此領(lǐng)域大有作為,名氣很大。
日志自身特點(diǎn)沒(méi)有什么通用的規(guī)范性,人為的隨意性很大,日志內(nèi)容也是任意的,更加需求全文檢索能力,傳統(tǒng)技術(shù)手段本身做全文檢索很是吃力。而Elasticsearch本身起步就是靠全文檢索,再加上其分布式架構(gòu)的特性,非常符合海量日志快速檢索的場(chǎng)景。今天如果還發(fā)現(xiàn)有IT從業(yè)人員用傳統(tǒng)的技術(shù)手段做日志檢索,應(yīng)該要打屁股了。
如今已經(jīng)從ELK三件套發(fā)展到Elastic Stack了,新增加了很多非常有用的產(chǎn)品,大大增強(qiáng)了日志檢索領(lǐng)域。
5)監(jiān)控領(lǐng)域
指標(biāo)監(jiān)控,Elasticsearch進(jìn)入此領(lǐng)域比較晚,卻趕上了好時(shí)代,Elasticsearch由于其倒排索引核心算法,也是支持時(shí)序數(shù)據(jù)場(chǎng)景的,性能也是相當(dāng)不錯(cuò)的,在功能性上完全壓住時(shí)序數(shù)據(jù)庫(kù)。
Elasticsearch搞監(jiān)控得益于其提供的Elastic Stack產(chǎn)品生態(tài),豐富完善,很多時(shí)候監(jiān)控需要立體化,除了指標(biāo)之外,還需要有各種日志的采集分析,如果用其它純指標(biāo)監(jiān)控產(chǎn)品,如Promethues,遇到有日志分析的需求,還必須使用Elasticsearch,這對(duì)于技術(shù)棧來(lái)說(shuō),又?jǐn)U增了,相應(yīng)的掌控能力會(huì)下降,個(gè)人精力有限,無(wú)法同時(shí)掌握很多種數(shù)據(jù)產(chǎn)品,如此選擇一個(gè)更加通用的產(chǎn)品才符合現(xiàn)實(shí)。
圖示 :Elastic性能對(duì)比時(shí)序數(shù)據(jù)庫(kù)(來(lái)自騰訊云分享)
6)機(jī)器學(xué)習(xí)
機(jī)器學(xué)習(xí)最近幾年風(fēng)吹的很大,很多數(shù)據(jù)產(chǎn)品都集成了,Elasticsearch也必須有,而且做的更好,真正將機(jī)器學(xué)習(xí)落地成為一個(gè)產(chǎn)品 ,簡(jiǎn)化使用,所見(jiàn)所得;而不像其它數(shù)據(jù)產(chǎn)品,僅僅集成算法包,使用者還必須開(kāi)發(fā)很多應(yīng)用支持。
Elasticsearch機(jī)器學(xué)習(xí)提供了兩種方式,一種是異常檢測(cè)類(lèi)型,屬于無(wú)監(jiān)督學(xué)習(xí),采用聚類(lèi)模型,通常應(yīng)用在安全分析領(lǐng)域,檢測(cè)異常訪問(wèn)等;一種是數(shù)據(jù)幀分析,屬于分類(lèi)與回歸,屬于監(jiān)督學(xué)習(xí),可用于在業(yè)務(wù)模型領(lǐng)域,如電商行業(yè),價(jià)格模型分析。
Elasticsearch本身是數(shù)據(jù)平臺(tái),集成了部分機(jī)器學(xué)習(xí)算法,同時(shí)又集成了Kibana可視化操作,使得從數(shù)據(jù)采集、到模型訓(xùn)練、到模型預(yù)測(cè)應(yīng)用都可以一鍵式完成。
Elasticserach提供的機(jī)器學(xué)習(xí)套件,個(gè)人認(rèn)為最應(yīng)該應(yīng)用在數(shù)據(jù)質(zhì)量這個(gè)領(lǐng)域,幫助大數(shù)據(jù)平臺(tái)自動(dòng)檢測(cè)數(shù)據(jù)質(zhì)量,從而降低人力提供效率。
圖示 :機(jī)器學(xué)習(xí)應(yīng)用示意圖(截圖)
Elasticsearch整個(gè)的技術(shù)棧非常復(fù)雜,涉及到的理論與技術(shù)點(diǎn)非常多,完全掌握并不現(xiàn)實(shí),作為一個(gè)IT從業(yè)者,首先是定位好自己的角色,依據(jù)角色需求去學(xué)習(xí)掌握必備的知識(shí)點(diǎn)。以下是筆者對(duì)于一個(gè)技術(shù)產(chǎn)品的劃分模型:
Elasticsearch涉及到的概念很多,核心概念其實(shí)就那么幾個(gè),對(duì)于一個(gè)新手來(lái)說(shuō),掌握概念目的是為了建立起自己的知識(shí)思維模型,將之后學(xué)習(xí)到的知識(shí)點(diǎn)做一個(gè)很好的歸納劃分;對(duì)于一個(gè)其它數(shù)據(jù)產(chǎn)品的老手來(lái)說(shuō) ,掌握概念的目的是為了與其它數(shù)據(jù)產(chǎn)品劃分比較,深入的了解各自的優(yōu)劣,在之后工作中若有遇到新的業(yè)務(wù)場(chǎng)景,可以迅速做出抉擇。
IT從業(yè)者普遍都有個(gè)感受,IT技術(shù)發(fā)展太快了,各種技術(shù)框架產(chǎn)品層出不窮,學(xué)習(xí)掌握太難了,跟不上節(jié)奏。其實(shí)個(gè)人反倒覺(jué)得變化不大,基礎(chǔ)理論核心概念并沒(méi)有什么本質(zhì)的發(fā)展變化,無(wú)非是工程技術(shù)實(shí)操變了很多,但這些是需要深入實(shí)踐才需要的,對(duì)于概念上無(wú)需要。
作為一個(gè)技術(shù)總監(jiān),前端工程師工作1~2年的問(wèn)題都可以問(wèn)倒他,這是大家對(duì)于概念認(rèn)知需求不一樣。
圖示:Elasticsearch核心概念
開(kāi)發(fā)工程師的職責(zé)是將需求變成可以落地運(yùn)行的代碼。Elasticsearch的應(yīng)用開(kāi)發(fā)工作總結(jié)起來(lái)就是增刪改查,掌握必備的ES REST API,熟練運(yùn)用足以。筆者之前任職某物流速運(yùn)公司,負(fù)責(zé)Elasticsearch相關(guān)的工作,公司Elasticsearch的需求很多,尤其是查詢方面,ES最厲害的查詢是DSL,這個(gè)查詢語(yǔ)法需要經(jīng)常練習(xí)使用,否則很容易忘記,當(dāng)每次有人詢問(wèn)時(shí),都安排一個(gè)工程師專(zhuān)門(mén)負(fù)責(zé)各種解答,他在編寫(xiě)DSL方面非常熟練,幫助了很多的工程師新手使用Elasticsearch,屏蔽了很多細(xì)節(jié),若有一些難搞定的問(wèn)題,會(huì)由我來(lái)解決,另外一方面作為負(fù)責(zé)人的我偶然還要請(qǐng)他幫忙編寫(xiě)DSL。
Elasticsearch后面提供了SQL查詢的功能,但比較局限,復(fù)雜的查詢聚合必須回到DSL。
圖示:DSL語(yǔ)法復(fù)雜度較高
Elasticsearch集群架構(gòu)總體比較復(fù)雜,首先得深入了解Elasticseach背后實(shí)現(xiàn)的原理,包括集群原理、索引原理、數(shù)據(jù)寫(xiě)入過(guò)程、數(shù)據(jù)查詢過(guò)程等;其次要有很多案例實(shí)戰(zhàn)的機(jī)會(huì),遇到很多挑戰(zhàn)問(wèn)題 ,逐一排除解決,增加自己的經(jīng)驗(yàn)。
對(duì)于開(kāi)發(fā)工程師來(lái)說(shuō),滿足日常需求開(kāi)發(fā)無(wú)需掌握這些,但對(duì)于Elasticsearch技術(shù)負(fù)責(zé)人,就非常有必要了,面對(duì)各種應(yīng)用需求,要能從架構(gòu)思維去平衡,比如日志場(chǎng)景集群需求、大數(shù)據(jù)分析場(chǎng)景需求、應(yīng)用系統(tǒng)復(fù)雜查詢場(chǎng)景需求等,從實(shí)際情況設(shè)計(jì)集群架構(gòu)以及資源分配等。
Elasticsearch本質(zhì)是一個(gè)數(shù)據(jù)庫(kù),也需要有專(zhuān)門(mén)的DBA運(yùn)維,只是更偏重應(yīng)用層面,所以運(yùn)維職責(zé)相對(duì)傳統(tǒng)DBA沒(méi)有那么嚴(yán)苛。對(duì)于集群層面必須掌握集群搭建,集群擴(kuò)容、集群升級(jí)、集群安全、集群監(jiān)控告警等;另外對(duì)于數(shù)據(jù)層面運(yùn)維,必須掌握數(shù)據(jù)備份與還原、數(shù)據(jù)的生命周期管理,還有一些日常問(wèn)題診斷等。
Elasticsearch本身是開(kāi)源,閱讀源碼是個(gè)很好的學(xué)習(xí)手段,很多獨(dú)特的特性官方操作文檔并沒(méi)有寫(xiě)出來(lái),需要從源碼中提煉,如集群節(jié)點(diǎn)之間的連接數(shù)是多少,但對(duì)于多數(shù)Elasticsearch從業(yè)者來(lái)說(shuō),卻非必要。了解到國(guó)內(nèi)主要是頭部大廠需要深入源碼定制化改造,更多的是集中在應(yīng)用的便捷性改造,而非結(jié)構(gòu)性的改造,Elastic原廠公司有幾百人的團(tuán)隊(duì)做產(chǎn)品研發(fā),而國(guó)內(nèi)多數(shù)公司就極少的人,所以從產(chǎn)量上來(lái)說(shuō),根本不是一個(gè)等級(jí)的。
如果把Elasticsearch比喻為一件軍事武器,對(duì)于士兵來(lái)說(shuō) ,熟練運(yùn)用才是最重要的,至于改造應(yīng)該是武器制造商的職責(zé),一個(gè)士兵可以使用很多武器裝備,用最佳的組合才能打贏一場(chǎng)戰(zhàn)爭(zhēng),而不是去深入原理然后造輪子,容易本末倒置。
算法應(yīng)該算是數(shù)據(jù)產(chǎn)品本質(zhì)的區(qū)別,關(guān)系型數(shù)據(jù)庫(kù)索引算法主要是基于B-Tree, Elasticserach索引算法主要是倒排索引,算法的本質(zhì)決定了它們的應(yīng)用邊界,擅長(zhǎng)的應(yīng)用領(lǐng)域。
通常掌握一個(gè)新的數(shù)據(jù)產(chǎn)品時(shí),個(gè)人的做法是看它的關(guān)鍵算法。早期做過(guò)一個(gè)地理位置搜索相關(guān)的項(xiàng)目,基于某個(gè)坐標(biāo)搜索周邊的坐標(biāo)信息,開(kāi)始的時(shí)候采用的是三角函數(shù)動(dòng)態(tài)計(jì)算的方式,數(shù)據(jù)量大一點(diǎn),掃描一張數(shù)據(jù)表要很久;后面接觸到Geohash算法,按照算法將坐標(biāo)編碼,存儲(chǔ)在數(shù)據(jù)庫(kù)中,基于前綴匹配查詢,性能高效幾個(gè)數(shù)量級(jí),感嘆算法的偉大;再后面發(fā)現(xiàn)有專(zhuān)門(mén)的數(shù)據(jù)庫(kù)產(chǎn)品集成了Geohash算法,使用起來(lái)就更簡(jiǎn)單了。
Elasticsearch集成很多算法,每種算法實(shí)現(xiàn)都有它的應(yīng)用場(chǎng)景。
Elasticsearch早期出過(guò)一本參考手冊(cè)《Elastic權(quán)威指南》,是一本很好的入門(mén)手冊(cè),從概念到實(shí)戰(zhàn)都有涉及,缺點(diǎn)是版本針對(duì)的2.0,過(guò)于陳舊,除去核心概念,其余的皆不適用,當(dāng)前最新版本已經(jīng)是7.7了,跨度太大,Elasticsearch在跨度大的版本之間升級(jí)稍微比較麻煩,索引數(shù)據(jù)幾乎是不兼容的,升級(jí)之后需要重建數(shù)據(jù)才可。
Elasticsearch當(dāng)前最好的參考資料是官方文檔,資料最全,同步發(fā)布版本,且同時(shí)可以參考多個(gè)版本。Elasticsearch官方參考文檔也是最亂的,什么資料都有,系統(tǒng)的看完之后感覺(jué)仍在此山中,有點(diǎn)類(lèi)似一本字典,看完了字典,依然寫(xiě)不好作文;而且資料還是英文的,至此就阻擋了國(guó)內(nèi)大部分程序進(jìn)入。
但想要學(xué)習(xí)Elasticsearch,官方文檔至少要看過(guò)幾遍,便于迅速查詢定位。
圖示:官方文檔截圖說(shuō)明
Elasticsearch成名很早,國(guó)內(nèi)也有很多視頻課程,多數(shù)比較碎片,或是紙上談兵,缺乏實(shí)戰(zhàn)經(jīng)驗(yàn)。Elasticsearch有一些專(zhuān)門(mén)的書(shū)籍,建議購(gòu)買(mǎi)閱讀,國(guó)內(nèi)深度一些的推薦《Elasticsearch源碼解析與優(yōu)化實(shí)戰(zhàn)》,國(guó)外推薦《Elasticsearch實(shí)戰(zhàn)》,而且看書(shū)還有助于培養(yǎng)系統(tǒng)思維。
Elasticsearch技術(shù)棧功能特性很多,系統(tǒng)學(xué)習(xí)要保持好的心態(tài),持之以恒,需要很長(zhǎng)時(shí)間,也需要參考很多資料。
Elasticsearch是站在巨人肩膀上產(chǎn)品,背后借鑒了很多設(shè)計(jì)思想,集成了很多算法,官方的參考文檔在技術(shù)原理探討這塊并沒(méi)有深入,僅僅點(diǎn)到為止。想要深入了解,必須得另辟蹊徑。
Elastic官方的博客有很多優(yōu)質(zhì)的文章,很多人因?yàn)橛⑽牡木壒蕰?huì)忽視掉,里面有很多關(guān)鍵的實(shí)現(xiàn)原理,圖文并茂,寫(xiě)得非常不錯(cuò);另外國(guó)內(nèi)一些云廠商由于提供了Elasticsearch云產(chǎn)品,需要深度定制開(kāi)發(fā),也會(huì)有一些深入原理系列的文章,可以去閱讀參考,加深理解。對(duì)于已經(jīng)有比較好的編程思維的人,也可以直接去下載官方源碼,設(shè)置斷點(diǎn)調(diào)試閱讀。
項(xiàng)目實(shí)戰(zhàn)是非常有效的學(xué)習(xí)途徑,考過(guò)駕照的朋友都深有體會(huì),教練一上來(lái)就直接讓你操練車(chē),通過(guò)很多次的練習(xí)就掌握了。Elasticsearch擅長(zhǎng)的領(lǐng)域很多,總結(jié)一句話就是“非強(qiáng)事務(wù)ACID場(chǎng)景皆可適用”,所以可以做的事情也很多。
日志領(lǐng)域的需求會(huì)讓你對(duì)于數(shù)據(jù)寫(xiě)入量非常的關(guān)心,不斷的調(diào)整優(yōu)化策略,提高吞吐量,降低資源消耗;業(yè)務(wù)系統(tǒng)的需求會(huì)讓你對(duì)數(shù)據(jù)一致性與時(shí)效性特別關(guān)心,從其它數(shù)據(jù)庫(kù)同步到ES,關(guān)注數(shù)據(jù)同步的速度,關(guān)注數(shù)據(jù)的準(zhǔn)確性,不斷的調(diào)整你的技術(shù)方案與策略;大數(shù)據(jù)領(lǐng)域的需求會(huì)讓你對(duì)于查詢與聚合特別關(guān)注,海量的數(shù)據(jù)需要快速的檢索,也需要快速的聚合結(jié)果。
項(xiàng)目實(shí)戰(zhàn)的過(guò)程,就是一個(gè)挖坑填坑的過(guò)程,實(shí)戰(zhàn)場(chǎng)景多了,解決的問(wèn)題多了,自然就掌握得很好了。
之前筆者在前公司任職時(shí),所有涉及到的Elasticsearch疑難雜癥都會(huì)找我解決,有一些項(xiàng)目采用別的數(shù)據(jù)產(chǎn)品問(wèn)題比較多,也來(lái)找我評(píng)估更換ES是否合適,以及給出相關(guān)建議。筆者認(rèn)為最好的學(xué)習(xí)方式是找到組織,找到經(jīng)驗(yàn)豐富的大咖,持續(xù)交流學(xué)習(xí),成長(zhǎng)最快也最好。
特別推薦一個(gè)分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒(méi)關(guān)注的小伙伴,可以長(zhǎng)按關(guān)注一下:
長(zhǎng)按訂閱更多精彩▼
如有收獲,點(diǎn)個(gè)在看,誠(chéng)摯感謝
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!