大數據核心企業級海量數據的搜尋引擎elasticsearch架構解析

最近有很多粉絲髮私信想讓我寫一下關於數據搜索方面的文章,前面關於數據的鋪墊基本上都講過了,從hdfs到mr到hbase、zk、hive在之後的文章我會對數據的採集和處理的兩個組件sqoop和flume進行實例的講解,本文只對ES的架構和基本的使用進行講解


什麼是elasticsearch?

簡單的說es就是一個高擴展、開源的全文檢索和分析引擎,它可以準實時地快速存儲、搜索、分析海量的數據。他是基於Lucene進行編寫的:

Lucene其實可以說是一個開源的全文檢索引擎工具包(類似於Java api),而Elasticsearch底層是基於這些包,對其進行了擴展,提供了比Lucene更為豐富的查詢語言,可以非常方便的通過ElasticsearchHTTP接口與底層Lucene交互

那麼什麼是全文檢索呢?

全文檢索是指計算機索引程序通過掃描文章中的每一個詞,對每一個詞建立一個索引,指明該詞在文章中出現的次數和位置,當用戶查詢時,檢索程序就根據事先建立的索引進行查找,並將查找的結果反饋給用戶的檢索方式。這個過程類似於通過字典中的檢索字表查字的過程。全文搜索搜索引擎數據庫中的數據。

簡單來看一下標準的定義

Lucene 定義

lucene是一個開放源代碼的全文檢索引擎工具包,但它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎。

大數據核心企業級海量數據的搜索引擎elasticsearch架構解析

ElasticSearch 定義

ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java開發的,並作為Apache許可條款下的開放源碼發佈,是當前流行的企業級搜索引擎。設計用於雲計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。

關於他們二者之間的關係前面已經說過了,就是一個ES是基於lucene進行開發的。

提到海量數據的搜索有一個solr肯定有很多人聽說過了

Solr 定義:

Solr是Apache 下的一個開源項目,使用Java基於Lucene開發的全文檢索服務是一個獨立的企業級搜索應用服務器,它對外提供類似於Web-service的API接口。用戶可以通過http請求,向搜索引擎服務器提交一定格式的XML文件,生成索引;也可以通過Http Get操作提出查找請求,並得到XML格式的返回結果。

ElasticSearch vs Solr 優缺點

大數據核心企業級海量數據的搜索引擎elasticsearch架構解析

ElasticSearch vs Solr 檢索速度

當單純的對已有數據進行搜索時,Solr更快。

大數據核心企業級海量數據的搜索引擎elasticsearch架構解析

當實時建立索引時, Solr會產生io阻塞,查詢性能較差, Elasticsearch具有明顯的優勢。

大數據核心企業級海量數據的搜索引擎elasticsearch架構解析

隨著數據量的增加,Solr的搜索效率會變得更低,而Elasticsearch卻沒有明顯的變化。

大數據核心企業級海量數據的搜索引擎elasticsearch架構解析

大型互聯網公司,實際生產環境測試,將搜索引擎從Solr轉到Elasticsearch以後的平均查詢速度有了50倍的提升。

大數據核心企業級海量數據的搜索引擎elasticsearch架構解析

ElasticSearch vs 關係型數據庫

大數據核心企業級海量數據的搜索引擎elasticsearch架構解析

可以看到ES是通過一個個的索引庫去進行海量數據的搜索的

ElasticSearch 架構

大數據核心企業級海量數據的搜索引擎elasticsearch架構解析

ElasticSearch 工作原理

大數據核心企業級海量數據的搜索引擎elasticsearch架構解析

ElasticSearch 在Hadoop生態圈的位置

大數據核心企業級海量數據的搜索引擎elasticsearch架構解析

在hadoop生態圈中我們把設計為三層,分別為source、data system 和app,那麼ES就是對data system通過建立各種索引及其他進行連接和搜索的使用者

大數據核心企業級海量數據的搜索引擎elasticsearch架構解析

在一個web數據的採集場景中,多臺web服務器,產生的數據包含日誌和其他數據通過flume進行採集後,根據不同的場景通過不同的sink分別傳輸到hadoop的存儲(hdfs)、和

ES的存儲中,hadoop的存儲和ES之間可以通過mr、hbase等進行數據的相互調用和傳輸

ElasticSearch 應用場景

1.站內搜索:主要和 Solr 競爭,屬於後起之秀

2.NoSQL Json文檔數據庫:主要搶佔 Mongo 的市場,它在讀寫性能上優於 Mongo ,同時也支持地理位置查詢,還方便地理位置和文本混合查詢。

3.監控:統計、日誌類時間序的數據存儲和分析、可視化,這方面是引領者

4.國外:Wikipedia(維基百科)使用ES提供全文搜索並高亮關鍵字、StackOverflow(IT問答網站)結合全文搜索與地理位置查詢、Github使用Elasticsearch檢索1300億行的代碼

5.國內:百度(在雲分析、網盟、預測、文庫、錢包、風控等業務上都應用了ES,單集群每天導入30TB+數據,總共每天60TB+)、新浪 、阿里巴巴、騰訊等公司均有對ES的使用

大數據核心企業級海量數據的搜索引擎elasticsearch架構解析


分享到:


相關文章: