作者其他ELK快速入門系列文章
logstash快速入門實戰指南
Kibana從入門到精通
一、前言
驅動未來商業發展的最重要“能源”不是石油,而是資料。我們還來不及了解它,這個世界已經被它淹沒。多年來,我們系統間流轉和産生的大量資料已讓我們不知所措。現有的技術都集中在如何解決資料倉庫存儲以及如何結構化這些資料。這些看上去都挺美好,直到你實際需要基于這些資料實時做決策分析的時候才發現根本不是那麼一回事。Elasticsearch在這個時代能給我們帶什麼呢?我們帶着這些疑問去探索Elasticsearch能做什麼。。。
二、Elasticsearch能做什麼
Elasticsearch 是一個實時的分布式搜尋分析引擎, 它能讓你以一個前所未有過的速度和規模,去探索你的資料。 它被用作全文檢索、結構化搜尋、分析以及這三個功能的組合:
- Wikipedia 使用 Elasticsearch 提供帶有高亮片段的全文搜尋,還有 search-as-you-type 和 did-you-mean 的建議。
- 衛報 使用 Elasticsearch 将網絡社交資料結合到訪客日志中,實時的給它的編輯們提供公衆對于新文章的回報。
- Stack Overflow 将地理位置查詢融入全文檢索中去,并且使用 more-like-this 接口去查找相關的問題與答案。
- GitHub 使用 Elasticsearch 對1300億行代碼進行查詢。
然而 Elasticsearch 不僅僅為巨頭公司服務。它也幫助了很多初創公司,像 Datadog 和 Klout, 幫助他們将想法用原型實作,并轉化為可擴充的解決方案。Elasticsearch 能運作在你的筆記本電腦上,也可以擴充到上百台伺服器上去處理PB級資料。
Elasticsearch 中沒有一個單獨的元件是全新的或者是革命性的。全文搜尋很久之前就已經可以做到了, 就像早就出現了的分析系統和分布式資料庫。 革命性的成果在于Elasticsearch将這些單獨的,有用的元件融合到一個單一的、一緻的、實時的應用中。它對于初學者而言有一個較低的門檻, 而當你的技能提升或需求增加時,它也始終能滿足你的需求。
如果你在閱讀本文章前已經你擁有大量資料;你準備使用它做些什麼 ,否則擁有這些資料将沒有意義。
不幸的是,大部分資料庫在從你的資料中提取可用知識時出乎意料的低效。 當然,你可以通過時間戳或精确值進行過濾,但是它們能夠很好地按您要求進行全文檢索、處理同義詞、通過相關性給文檔評分麼? 它們從同樣的資料中生成分析與聚合資料嗎?最重要的是,它們能實時地完成上面的那些需求而不需經過大型批處理的任務麼?
這就是 Elasticsearch 脫穎而出的地方:Elasticsearch 鼓勵你去探索與利用資料,而不是因為查詢資料太困難,就讓它們爛在資料倉庫裡面。
在使用時這些資料時,Elasticsearch 将成為你最好的朋友,與您一起探索資料裡的一切。。。
三、Elasticsearch如何誕生
Elasticsearch是一個開源的搜尋引擎,建立在一個全文搜尋引擎庫Apache Lucene™基礎之上。 Lucene可以說是當下最先進,高性能,全功能的搜尋引擎庫 - 無論是開源還是私有。
但是Lucene僅僅是一個庫。為了充分發揮其功能,你需要使用Java并将Lucene直接內建到應用程式中。更糟糕的是,您可能需要獲得資訊檢索學位才能了解其工作原理.Lucene 非常複雜。
Elasticsearch也是使用Java編寫的,它的内部使用Lucene做索引與搜尋,但是它的目的是使用全文檢索變得簡單,通過隐藏Lucene的複雜性,取而代之的提供一套簡單一緻的RESTful API。
然而,Elasticsearch不僅僅是Lucene,并且也不僅僅是一個全文搜尋引擎。 它可以被下面這樣準确的形容:
- 一個分布式的實時文檔存儲,每個字段可以被索引與搜尋
- 一個分布式實時分析搜尋引擎
- 能勝任上百個服務節點的擴充,并支援PB級别的結構化或者非結構化資料
Elasticsearch将所有的功能打包成一個單獨的服務,這樣你可以通過程式與它提供的簡單的RESTful API進行通信,可以使用自己喜歡的程式設計語言充當web用戶端,甚至可以使用指令行(去充當這個用戶端)。
就Elasticsearch而言,起步很簡單。對于初學者來說,它預設了一些适當的預設值,并隐藏了複雜的搜尋理論知識。它開箱即用。隻需最少的了解,你很快就能具有生産力。
随着你知識的積累,你可以利用Elasticsearch更多的進階特性,它的整個引擎是可配置并且靈活的。從衆多進階特性中,挑選恰當去修飾的Elasticsearch,使它能解決你遇到的問題。
四、Elasticsearch的應用場景
-
一個線上商城系統,使用者需要搜尋商城上的商品。
在這裡你可以用es存儲所有的商品資訊和庫存資訊,使用者隻需要輸入”手機”就可以搜尋到他需要搜尋到的商品。
-
一個運作的系統需要收集日志,用這些日志來分析、挖掘進而擷取系統業務未來的趨勢。
你可以用logstash(elk中的一個産品,elasticsearch/logstash/kibana)收集、轉換你的日志,并将他們存儲到es中。一旦資料到達es中,就你可以在裡面搜尋、運作聚合函數等操作來挖掘任何你感興趣的資訊。
-
如果你有想基于大量資料(數百萬甚至數十億的資料)快速調查、分析并且要将分析結果可視化的需求。
你可以用es來存儲你的資料,用kibana建構自定義的可視化圖形、報表,為業務決策提供科學的資料依
想用最簡單的方式去了解Elasticsearch能為你做什麼,那就是使用它了,讓我們開始一起進入下一個Elasticsearch主題:Elasticsearch基本概念