作者其他ELK快速入門系列文章
一、前言
驅動未來商業發展的最重要“能源”不是石油,而是數據。我們還來不及了解它,這個世界已經被它淹沒。多年來,我們系統間流轉和產生的大量數據已讓我們不知所措。現有的技術都集中在如何解決數據倉庫存儲以及如何結構化這些數據。這些看上去都挺美好,直到你實際需要基於這些數據實時做決策分析的時候才發現根本不是那么一回事。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基本概念