ElasticSearch 是什麼

為什麼要學習 ElasticSearch ?

ElasticSearch(ES)作為一款優秀的分佈式搜索分析引擎,越來越受到許多互聯網公司的關注,像小米、滴滴出行、攜程旅遊、阿里雲和騰訊雲等都在使用 ElasticSearch 。

最知名的應用公司就是 GitHub,它採用 ES 作為搜索引擎對代碼進行搜索。雖然它是一款優秀的分佈式搜索引擎,但是它強大的查詢、分析、聚合能力使得它與數據庫的邊界越來越模糊。因此很多大公司都喜歡用 ES 作為數據庫來存儲日誌或者其他業務數據,最常見的結合就是通過 Kafka 、 Redis 來作為數據源,logstash 進行轉化,ES 對數據存儲,kibana 對數據進行展示, ES+logstash+kibana(ELK)一體化的日誌分析、業務指標分析。

越來越多的公司使用 ElasticSearch ,這門技術已經不僅僅是大數據工程師必須要掌握的了,ES 還提供了 Java ,python 等 API,因此 ES 將會成為 Java 工程師與 Python 工程師必不可缺的工具,靈活應用 ES 將會成為你未來最有競爭力的能力。

ElasticSearch 是什麼

為什麼不使用 MySQL,Oracle 或者 Hbase

傳統數據庫優點是結構化查詢,查詢速度快、安全。但是當數據量較大時候,無論是查詢還是插入都會變的十分緩慢,當然 MySQL 也可以做成分佈式,但是部署以及維護成本較高。Oracle 查詢速度是很快的,即使數據量較大,查詢速度也不會很慢,但是有多少公司願意負擔這個費用呢?

為什麼不使用 Redis 或者 Hbase 呢?

對於文檔數據庫,每個數據庫都有其應對的需求,就 Redis 而言,Redis 更適合做緩存數據庫,查詢速度非常快,但是它的數據結構是鍵值對,不能夠進行復雜的需求查詢,只能給一個 key 然後返回結果。Hbase 是基於Hadoop 的數據庫,它的特點是能夠存儲海量數據,並且擴展起來簡單,因為底層是基於 HDFS 的。對於實時需求任務,以及在線分析就比較困難,不可能把所有數據都加載出來,或者寫一個 MapReduce job 來進行任務分析,這樣的工程是比較耗費資源的。

ES 是分佈式的,並且在數據量超大的情況下其查詢速度也嗖嗖的快。另外對象中無論是怎樣的複雜關係,都可以用 JSON 格式表達出來,可讀性較高,ES 就是以 JSON 數據格式存儲數據。並且支持在線分析、實時分析。ES 是基於存儲、查詢、聚合分析和可視化於一體的解決方案。

什麼樣的數據適合存進去呢?

日誌數據,一般如果程序遇到什麼問題都可以通過查詢日誌分析來定位錯誤的地方,這種需求肯定是能夠過關鍵字查詢,能夠在線可視化分析。這個需求就不合適放在傳統數據庫中,因為日誌冗餘大,而且涉及很多文本查詢,使用傳統數據庫是非常不方便的,Redis 等文檔數據庫更不適合。ES 正好就是全文本檢索系統,且是分佈式的適合這個需求。另外指標數據也是適合存進去的,指標實時在線監控、報警等,ES 提供了一整套解決方案。

所以說不同的數據庫或者全文檢索系統都有其專門的應用場景,當涉及到實時,文本檢索,數據量大,可視化分析,聚合分析的時候都可以考慮使用 ES 來作為解決方案。

ElasticSearch 能夠做什麼?

從數據獲取,存儲計算到可視化,ES 開發了一整套解決方案,Logstash 、Beat 負責數據抓取,ES 負責存儲計算,kibana 對數據進行展示分析。另外還有收費的 X-Pack 可以實現安全、告警、監控和 ML 等更豐富的功能。ES 在搜索、日誌分析、指標分析和安全分析等領域應用廣泛。從前端到後端到數據分析,從雲服務到最流行的機器學習,ES 都提供了一整套解決方案。

ElasticSearch 是什麼

ElasticSearch 項目的起源是什麼?

ES 起源於一款優秀的基於 Java 開發的搜索引擎類庫——Lucene。Lucene 具有高性能、易擴展的優點,但是它只是一個類庫,與業務結合的比較緊密。筆者曾使用過 C# 的 Lucene.net ,當時的業務場景是對農村宅地基信息進行搜索,我那時候研究類庫的使用方法,首先如何對文本分詞,分詞後如何建立索引……之後終於完成了一個全文搜索功能,踩了很多坑,學習曲線很陡峭。

另外如果有其他的項目也需要全文搜索功能,那你只能重新寫全文搜索功能業務。全文搜索只是一個功能,不應該跟業務耦合的這麼緊密,因此將這個功能單獨抽離出來作為一個服務,只需要提供一個接口,就可以實現這個功能。因此出現了 Solr(Apache 開源項目),Elastic Inc(開源軟件/上市公司)的 ES ,Splunk(商業上市公司)。

ElasticSearch 是什麼

圖(a)是使用 Lucene 開發項目,與業務耦合緊密,不同的項目需要重新開發全文搜索功能。

圖(b)是將全文搜索業務抽離出來作為一個雲服務。

ElasticSearch 在互聯網開發中有多火爆?多流行?

市場上存在很多搜索引擎,相對於 Java 工程師來說 Solr 應該是最為熟悉的,當然 Solr 也火爆了很多年,而 Splunk 鮮為人知些,因為它是收費的。查看最近幾年搜索引擎的排名情況,可以看出,2016 年是個分水嶺,2013 年到 2016 年 Solr 都遠遠超過 ES,但是 ES 在 2016 年之後,開始飛速的增長,以至超過 solr 跟 Splunk ,成為最受歡迎的一款搜索引擎。

伴隨而來就是 ElasticSearch 相關的崗位在招聘市場中陡然大增,一度出現供不應求的現象。平均薪資水平也遠高於行業內其他工種。

ElasticSearch 是什麼


ElasticSearch 是什麼


分享到:


相關文章: