掃二維碼與項目經理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流
作者:佚名 2018-05-25 13:04:21
云計算 作為一款開源的定位于全文搜索引擎服務的Elasticsearch,可能是這些問題下比較高效的一種解決方案。那么,Elasticsearch的適用場景,能在什么地方發(fā)揮作用?Elasticsearch的特點優(yōu)勢又是什么?總的來說,涉及搜索的業(yè)務場景可能都會有Es的用武之地,下面將介紹Es的幾種常見業(yè)務場景。

成都創(chuàng)新互聯(lián)公司專注于企業(yè)全網整合營銷推廣、網站重做改版、永善網站定制設計、自適應品牌網站建設、H5建站、電子商務商城網站建設、集團公司官網建設、成都外貿網站制作、高端網站制作、響應式網頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為永善等各大城市提供網站開發(fā)制作服務。
當一個系統(tǒng)業(yè)務數(shù)據(jù)量達到百億條的時候,通常會引出一些問題:
1.數(shù)據(jù)怎么存儲,存儲到哪里
2.怎么保證數(shù)據(jù)安全,安全存儲策略是什么
3.數(shù)據(jù)怎么檢索,怎么做到快速響應
4.怎么對數(shù)據(jù)進行實時的統(tǒng)計分析
作為一款開源的定位于全文搜索引擎服務的Elasticsearch,可能是這些問題下比較高效的一種解決方案。那么,Elasticsearch的適用場景,能在什么地方發(fā)揮作用?Elasticsearch的特點優(yōu)勢又是什么?總的來說,涉及搜索的業(yè)務場景可能都會有Es的用武之地,下面將介紹Es的幾種常見業(yè)務場景。
問題引入:在復雜的計算機系統(tǒng)里面,一個系統(tǒng)可能由成千上百臺服務器構成,很多系統(tǒng)不在一個地區(qū)機房,甚至有跨國家的;即使是在一個地區(qū)的系統(tǒng),也有不同的來源,比如:操作系統(tǒng)、應用服務、業(yè)務邏輯等等。它們無時不刻都在產生新的各式各樣的日志數(shù)據(jù)。
面對如此海量的分布在各個服務器上的日志數(shù)據(jù),一旦我們需要去排查一些重要的信息,使用傳統(tǒng)的方式登陸到一臺臺機器上查看顯然有點力不從心。因此,建立一套集中式的日志管理系統(tǒng),把不同來源的日志數(shù)據(jù)集中整合到一個地方再進行分析就顯得尤為重要。
一套完整的集中式日志管理系統(tǒng),主要包含以下幾個功能:
解決方案:ELK
ELK是一套集中式日志管理方案,由ElasticSearch + Logstash + Kibana三個開源軟件組成。UES基于ElasticSearch和Kibana開發(fā),使用UES服務的ELK協(xié)議棧如下圖所示:
Logstash Agent收集不同來源的Server產生的日志,并存放到Elasticsearch集群中,而Kibana則從ES集群中查詢數(shù)據(jù)生成圖表,加上配置 Nginx 實現(xiàn)簡單的用戶認證,再返回給瀏覽器端。
Elasticsearch 是一個實時的分布式搜索和分析引擎,它可以用于全文搜索、結構化搜索以及分析。它是一個建立在全文搜索引擎 Apache Lucene 基礎上的搜索引擎,使用 Java 語言編寫。
Elasticsearch的主要特點:
Logstash 是一個具有實時渠道能力的數(shù)據(jù)收集引擎。它是一個完全開源的工具,可以對你的日志進行收集、過濾,并將其存儲供以后使用。
Logstash主要特點:
Logstash由三個主要部分組成:
Kibana 是一款基于 Apache 開源協(xié)議,使用 JavaScript 語言編寫,為 Elasticsearch 提供分析和可視化的 Web 平臺。它可以在 Elasticsearch 的索引中查找、交互數(shù)據(jù),并生成各種維度的表圖。
使用UES作為日志分析管理的案例分析如圖所示:
從案例中可以看出使用ELK技術來做日志管理和傳統(tǒng)方式的對比。結果顯而易見,使用ELK技術能在最短時間內解決問題,在日志管理方面更加便捷高效。
如今,無論是互聯(lián)網信息還是企業(yè)內部每天產生的信息,都在以指數(shù)級增長。對于企業(yè)內部,在每天產生的大量數(shù)據(jù)尤其是非結構化數(shù)據(jù)中,如何快速查找到對企業(yè)內部有用的信息,幾乎成為每個公司開始關注的重點。
Elasticsearch在實現(xiàn)全文檢索的過程中,首先要確定分詞器,Es默認有很多分詞器。一般中文分詞器使用第三方的ik分詞器、mmsegf分詞器和paoding分詞器,最初構建于lucene,后來移植于Es。目前在***版的Es中,使用的是ik分詞器。UES已經內置安裝了ik分詞器,并且支持自定義分詞詞庫。
當用戶產生大量的文本數(shù)據(jù)時,Es均會將其進行分詞并將這些詞語保存在索引中,只需輸入關鍵詞進行查詢,索引就能起到作用,查找對應的相同查詢詞,從而實現(xiàn)全文檢索。全文檢索的架構設計如下圖:
其中,Elasticsearch服務端進行數(shù)據(jù)索引存儲,Server提供檢索接口,瀏覽器端負責數(shù)據(jù)渲染和界面呈現(xiàn)。
隨著Elasticsearch技術的發(fā)展,使得Es已經超越了其最初的純搜索引擎角色,新增了數(shù)據(jù)聚合分析和可視化的特性。如果遇到***數(shù)量的文檔需要通過關鍵詞進行檢索時,Es肯定是***選擇。當然,如果文檔格式是Json的,也可以把Es當作一種NoSQL數(shù)據(jù)庫,對數(shù)據(jù)進行多維度的分析。
Elasticsearch是可以支持持久存儲、統(tǒng)計等多項功能的現(xiàn)代搜索引擎,這種特性也決定了某些場景下Es可以作為主要的后端服務存儲。Es替代傳統(tǒng)DB的前提是業(yè)務不對操作的事務性有特殊要求,由于 Es的權限管理并不是特別完善,所以只把Es作為內部存儲是可以替代傳統(tǒng)數(shù)據(jù)庫的。
還有一種場景:在一個已經運行了很長時間的復雜系統(tǒng)中添加檢索服務。一種非常冒險的方法是重構系統(tǒng)以支持使用Es,而相對安全的方法是將Es作為新的組件添加到現(xiàn)有系統(tǒng)中。
如圖所示的MySQL數(shù)據(jù)庫和Es集群存儲,需要找到一種方式使得兩存儲之間實時同步,例如 logstash-input-jdbc 插件。
其實Elasticsearch的應用場景遠不止這些,只有不斷嘗試,接觸新的應用場景,我們才有機會獲得更好解決方案的經驗。UES作為一款平臺產品推出,旨在應用到客戶廣泛的業(yè)務場景中,例如:
數(shù)據(jù)分析場景:分析網址、移動設備、服務器等非結構化和半結構化日志,分析傳統(tǒng)數(shù)據(jù)庫中數(shù)據(jù),用于錯誤排查、應用程序監(jiān)控、欺詐檢測、游戲、廣告等;
全文搜索場景:電商、O2O、企業(yè)等行業(yè)的搜索與導航服務;
實時統(tǒng)計分析場景:應用程序、用戶點擊等實時統(tǒng)計分析;
分布式文檔處理場景:對Json支持友好,支持地理位置查詢。
UES可以實現(xiàn)集群化的快速部署,極大降低人力運維成本。多種節(jié)點類型的提供、靈活的計費方式、支持業(yè)務動態(tài)擴容,此外集群豐富的預裝插件和監(jiān)控指標為用戶集群使用功能和數(shù)據(jù)安全保駕護航。

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流