人生起起伏伏,有風光無限日,也有落魄失魂時,人在低谷時,惟有「熬過去,纔會贏」web
前言數據庫
ElasticSearch在互聯網行業的應用愈來愈普遍,尤爲在大數據和搜索領域,隨着版本的迭代,功能也日益強大,ElasticSearch的前身是Compass,創造於2004年,在Compass的第三個版本中,創造者Shay Banon對其大部分進行了重寫,並於2010年2月發佈了Elasticsearch的第一個版本。目前市面上對於ElasticSearch的資料仍是比較少,尤爲是在一些場景下的結局方案,更是百裏挑一。本系列內容重點在於瞭解ElasticSearch的使用場景,並從入門開始講解,瞭解ElasticSearch的使用方式,和在一些場景下的解決方案。但願能幫助更多的人瞭解ElasticSearch,學習ElasticSearch,能更好的利用ElasticSearch去解決實際場景的問題。這是做者第一次寫文章,若是有不滿意或者有錯誤,還但願各位看官提出,做者會日漸努力去改善的。
api
ElasticSearch是一個基於Lucene庫的搜索引擎,它提供了一個分佈式多租戶能力的全文搜索引擎,同時提供了HTTP Web接口和無模式JSON文檔。ElasticSearch是使用JAVA語言開發的,客戶端在主流的Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby等其餘許多語言中都是可使用的。
elasticsearch
ES 的搜索引擎嚴重依賴於底層的 Filesystem Cache。若是Filesystem Cache能夠分配到更多的內存,讓內存足夠去存放IDX Segment File 索引數據文件,那麼數據基本就都是在內存中存放,全部的搜索都是直接在內存中查詢,速度是很是快的。若是Filesystem Cache沒有分配到足夠的內存,數據不足以所有存放在內存中,剩下的數據就會保存在硬盤中,受限於硬盤的讀寫速度,那麼性能便會大打折扣。編輯器
ElasticSearch是一個近實時搜索引擎,爲何說是近實時?首先,咱們須要知道一個索引(index),是由多個段(segment)組成的,新增的document會優先寫入到indexing buffer區中,而後被重寫成一個segment,以後再被寫入到Filesystem Cache,數據被寫入到Filesystem Cache中後,其實就已經能夠被打開了,但實際上,Filesystem Cache中要打開一個新的segment須要一個refresh操做,這個操做在es中默認是1秒鐘,這也是咱們爲何說es是個近實時搜索引擎的緣由。另外,數據寫入到了Filesystem Cache中並非已經結束了,數據還要進行持久化操做,在數據被寫入到Filesystem Cache中後,通過一段時間或者外部觸發,數據會執行fsync操做,對數據進行full commit寫入到硬盤中。分佈式
相似於Google搜索,百度搜索和維基百科等,對全文關鍵字進行檢索。es中提供了full-text search的查詢方式,能夠在在全文字段中搜索到最相關的文檔。例如博客,就是對全文檢索,檢索到文章相應的關鍵字,展示給用戶該文章的連接。性能
經過收集用戶的行爲日誌,分析並創建用戶模型,保存在es中,並利用es強大的深刻搜索和聚合的能力,能夠更好的分析和展現用戶的行爲數據。例如推薦系統,就是利用用戶模型的用戶數據,對用戶數據交叉查詢,分析出用戶細粒度的喜愛。學習
利用es高性能查詢的特性,收集系統的監控數據,近實時展示監控數據,同時也方便用戶對監控數據進行關鍵字排查。大數據
經常使用的方案是ELK(elasticsearch+logstash+kibana),利用logstash去收集logback的日誌信息,再經過es作存儲,最後能夠再kibana去利用es api查看和分析日誌的相關信息。flex
PART
01
能夠搭建大型集羣,去處理PB級數據,服務於大型企業,同時也能夠單機部署,服務於小型企業
PART
02
集合了lucene的全文檢索的特色,但又具備支持分佈式技術,同時具備分析的能力,加上自身提供存儲功能,部署簡單,達到了真正開箱即用的便捷。
PART
03
擁有傳統數據庫的存儲能力,又在其基礎上加強了查詢能力,並提供各類分析,檢索的能力,能夠處理海量數據,提供了不少數據庫所沒法提供的功能
這期目前就先寫到這了,這是我第一次寫技術文章,文筆也可能不是很好,中間若是有問題或者出錯的地方,你們能夠提出來,若是有幸你看到這篇文章,但願能點個贊,在此,感謝各位支持和點贊,謝謝!