ElasticSearch學習(一):ElasticSearch介紹

  1、ElasticSearch是什麼?html

  ElasticSearch是一款很是強大的、基於Lucene的開源搜索及分析引擎,能夠幫助你從海量數據中,快速找到相關的數據信息。數據庫

  好比,當你在GitHub上搜索時,ElasticSearch不只能夠幫助你找到相關的代碼庫,還能夠幫助你實現代碼級的搜索和高亮顯示;當你在網上購物時,ElasticSearch能夠幫助你推薦相關的商品;當你打車時,ElasticSearch能夠經過定位附近的乘客和司機,幫助平臺優化調度。編程

  除了搜索,結合Kibana、Logstash、Beats開源產品,Elastic Stack(簡稱ELK)還被普遍運用在大數據近實時分析領域,包括:日誌分析、指標監控、信息安全等。它能夠幫助你探索海量結構化、非結構化數據,按需建立可視化報表,對監控數據設置報警閾值,經過使用機器學習,自動識別異常情況。安全

  ElasticSearch是基於Restful WebApi,使用Java語言開發的搜索引擎庫類,並做爲Apache許可條款下的開放源碼發佈,是當前流行的企業級搜索引擎。其客戶端在Java、C#、PHP、Python等許多語言中都是可用的。相應下載地址: https://www.elastic.co/guide/en/elasticsearch/client/index.html架構

  因此,ElasticSearch具有兩個優點:運維

  1)天生支持分佈式,可水平擴展;機器學習

  2)提供了Restful接口,下降全文檢索的學習曲線,由於Restful接口,因此能夠被任何編程語言調用;elasticsearch

  說一下Lucene的優缺點:編程語言

  優勢:1)高性能;2)易擴展;分佈式

  缺點:

  1)只能基於Java語言開發;

  2)類庫的接口學習曲線陡峭;

  3)原生並不支持水平擴展;

  2、Elastic Stack的構成

  一、ElasticSearch對數據進行搜索、分析和存儲,其是基於JSON的分佈式搜索和分析引擎,專門爲實現水平可擴展性、高可靠性和管理便捷性而設計的

它的實現原理主要分爲如下幾個步驟:

    1)首先用戶將數據提交到ElasticSearch數據庫中;

    2)再經過分詞控制器將對應的語句分詞;

    3)將分詞結果及其權重一併存入,以備用戶在搜索數據時,根據權重將結果排名和打分,將返回結果呈現給用戶;

  二、Kibana實現數據可視化,其做用就是在ElasticSearch中進行民航。Kibana可以以圖表的形式呈現數據,而且具備可擴展的用戶界面,能夠全方位的配置和管理ElasticSearch。

    Kibana最先的時候是基於Logstash建立的工具,後被Elastic公司在2013年收購。

    1)Kibana能夠提供各類可視化的圖表;

    2)能夠經過機器學習的技術,對異常狀況進行檢測,用於提早發現可疑問題;

  三、Beats是一個面向輕量型採集器的平臺,這些採集器能夠從邊緣機器向Logstash、ElasticSearch發送數據,它是由Go語言進行開發的,運行效率方面比較快。從下圖中能夠看出,不一樣Beats的套件是針對不一樣的數據源。

  

  四、Logstash是動態數據收集管道,擁有可擴展的插件生態系統,支持從不一樣來源採集數據,轉換數據,並將數據發送到不一樣的存儲庫中。其可以與ElasticSearch產生強大的協同做用,後被Elastic公司在2013年收購。

    它具備以下特性:

    1)實時解析和轉換數據;

    2)可擴展,具備200多個插件;

    3)可靠性、安全性。Logstash會經過持久化隊列來保證至少將運行中的事件送達一次,同時將數據進行傳輸加密;

    4)監控;

    對於日誌的解決方案通常分爲:日誌搜索、格式化分析、全文檢索、風險告警; 

  3、爲何要學習ElasticSearch?

  根據DB Engine的排名顯示,ElasticSearch是最受歡迎的企業級搜索引擎。根據https://db-engines.com/en/ranking網站排名可知,比較靠前的有三家大數據搜索引擎公司,除了ElasticSearch,還有Splunk和Solr。其中Solr也是基於Lucene。

  

  一、在當前軟件行業中,搜索是一個軟件系統或平臺的基本功能, 學習ElasticSearch就能夠爲相應的軟件打造出良好的搜索體驗。

  二、其次,ElasticSearch具有很是強的大數據分析能力。雖然Hadoop也能夠作大數據分析,可是ElasticSearch的分析能力很是高,具有Hadoop不具有的能力。好比有時候用Hadoop分析一個結果,可能等待的時間比較長。

  三、ElasticSearch能夠很方便的進行使用,能夠將其安裝在我的的筆記本電腦,也能夠在生產環境中,將其進行水平擴展。

  四、國內比較大的互聯網公司都在使用,好比小米、滴滴、攜程等公司。另外,在騰訊雲、阿里雲的雲平臺上,也都有相應的ElasticSearch雲產品可使用。

  五、在當今大數據時代,掌握近實時的搜索和分析能力,才能掌握核心競爭力,洞見將來。(漲工資 

  4、學習ElasticSearch的入手層面

  一、開發層面

    1)瞭解ElasticSearch有基本功能;2)底層分佈式工做原理;3)針對數據進行數據建模;

  二、運維層面

    1)進行集羣的容量規劃;2)對集羣進行滾動升級;3)對性能的優化;4)出現問題後,對問題的診斷與解決;

  三、方案層面

    1)學習ElasticSearch後,能夠針對實際狀況,解決搜索的相關問題;2)能夠將ELK運用到大數據分析場景中; 

  5、ElasticSearch的主要功能及應用場景

  一、主要功能:

    1)、海量數據的分佈式存儲以及集羣管理,達到了服務與數據的高可用以及水平擴展;

    2)、近實時搜索,性能卓越。對結構化、全文、地理位置等類型數據的處理;

    3)、海量數據的近實時分析(聚合功能)

  二、應用場景:

    1)網站搜索、垂直搜索、代碼搜索;

    2)日誌管理與分析、安全指標監控、應用性能監控、Web抓取輿情分析; 

  6、Elastic Stack的生態圈

  

  從上圖中能夠看到,ElasticSearch作爲ELK中的核心部分,它起到了數據存儲的做用。而Kibana在上層能夠爲使用者提供一個可視化的界面。Logstash和Beats能夠將各類各樣的數據進行抓取和收集。

在右側的X-Pack部分,是Elastic公司所提供的幾種收費服務,同時Elastic公司也提供雲的解決方案。 

  7、ElasticSearch與DB的集成

  

  針對上圖,能夠分爲兩種狀況:

  一、將ElasticSearch當成數據庫來存儲數據,好處是架構比較簡單;

  二、若數據更新比較頻繁,同時須要考慮數據事務性時,應該先將數據存入數據庫,而後創建一個合適的同步機制,將數據同步到ElasticSearch中; 

  8、ELK在數據指標收集,日誌分析的架構設計

  

  從上圖中能夠知道,經過Beats或者程序來進行數據方面的收集,當收集的數據量較大時,須要加入一層(Redis、Kafka、RabbitMQ)進行數據緩衝,而後將數據送入Logstash進行聚合及數據處理,最後通後ElasticSearch進行分詞、建立索引並存儲,經過Kibana或者Grafana這類圖形化工具進行數據的可視化和數據分析。

 

  知識學習來源:《Elasticsearch核心技術與實戰》

相關文章
相關標籤/搜索