Elasticsearch能幹什麼,關於Elasticsearch及實例應用

個人Elasticsearch系列文章,逐漸更新中,歡迎關注
0A.關於Elasticsearch及實例應用
00.Solr與ElasticSearch對比
01.ElasticSearch能作什麼?
02.Elastic Stack功能介紹
03.如何安裝與設置Elasticsearch API
04.若是經過elasticsearch的head插件創建索引_CRUD操做
05.Elasticsearch多個實例和head plugin使用介紹node

簡單介紹一下Elasticsearch是一個高度可擴展的開源全文搜索和分析引擎。它可讓你快速和近乎實時地存儲、搜索和分析海量的數據。它一般被用做底層引擎/技術,爲具備複雜搜索功能和需求的應用程序提供動力。Elasticsearch在Lucene StandardAnalyzer之上提供了一個分佈式系統,用於索引和自動類型猜想,並利用基於JSON的REST API來引用Lucene的功能。算法

Elasticsearch開箱即用,他的默認值已經調整到最優,並把複雜性隱藏起來,不會讓初學者看到複雜的內核。它有一個很短的學習曲線來掌握基礎知識,因此任何人只要稍加努力,均可以很快掌握它。數據庫

快速上手教程搭建能夠看這篇:Elasticsearch初學終極教程: 從零到一segmentfault

在消費者從電商網站目錄搜索產品信息的狀況下,面臨着產品信息檢索時間長等問題。這致使用戶體驗不佳,反過來又會錯過潛在客戶。現在,企業正在尋找替代的方式,將海量的數據存儲在這樣的方式,以快速檢索。
這能夠經過採用NOSQL而不是RDBMS(關係型數據庫管理系統)存儲數據來實現。

Elasticsearch做爲一個NOSQL數據庫,由於它具備如下特色。後端

  • 它易於使用
  • 擁有一個偉大的社區
  • 與JSON的兼容性
  • 普遍的用例

後端組件
爲了更好地瞭解Elasticsearch及其使用方法,對主要的後臺組件有一個大體的瞭解是很好的。安全

節點
節點是一個單一的服務器,它是集羣的一部分,存儲咱們的數據,並參與集羣的索引和搜索功能。就像集羣同樣,節點由一個名字來標識,默認狀況下,這個名字是一個隨機的通用惟一標識符(UUUID),在啓動時分配給節點。咱們能夠根據須要編輯默認的節點名稱。服務器

集羣
集羣是一個或多個節點的集合,這些節點共同承載着你的整個數據,並提供聯合索引和搜索功能。能夠有N個具備相同集羣名稱的節點。
Elasticsearch 在分佈式環境中運行:經過跨羣集複製,一個輔助羣集能夠做爲熱備份而自動啓動。網絡

索引
索引是一個具備類似特徵的文檔的集合。例如,咱們能夠有一個特定客戶的索引,另外一個索引是針對特定客戶,另外一個索引是針對產品信息,另外一個索引是針對不一樣類型的數據。在執行索引搜索、更新和刪除操做時,一個索引會有一個惟一的名稱來標識。在一個集羣中,咱們能夠根據本身的須要定義任意多的索引。索引相似於RDBMS中的數據庫。ssh

文檔
文檔是一個基本的信息單位,能夠編制索引。例如,你能夠有一個關於你的產品的索引,而後是一個單一客戶的文檔。這個文檔是用JSON(JavaScript Object Notation)表示的,這是一種無處不在的互聯網數據交換格式。比喻爲DB中的單一原始數據。
在一個索引中,你能夠存儲儘量多的文檔,這樣,在同一個索引中,你能夠有一個單一產品的文檔,另外一個是單一訂單的文檔。機器學習

碎片和副本
Elasticsearch 提供了將你的索引細分爲多個碎片的能力。當你建立一個索引時,你能夠簡單地定義你想要的碎片數量。每一個碎片自己就是一個功能齊全且獨立的 "索引",能夠託管在集羣中的任何節點上。
碎片很重要,由於它容許橫向分割你的數據量,也可能在多個節點上進行平行化操做,從而提升性能。碎片也能夠經過將你的索引的多個副本變成複製的碎片來使用,這在雲環境中能夠提供高可用性。

彈性堆棧
雖然搜索引擎的核心是搜索引擎,但用戶開始使用Elasticsearch作日誌,但願可以方便地攝取和可視化。Elasticsearch、Logstash、Kibana是彈性堆棧的主要組成部分,被稱爲ELK。

Kibana
Kibana可讓你將Elasticsearch數據可視化,並對Elastic Stack進行導航。你能夠經過一個問題開始選擇給數據定型的方式,找出交互式可視化將引導你的數據走向。你能夠從經典的圖表(直方圖、折線圖、餅狀圖、太陽圖等)開始,也能夠設計本身的可視化,在任何地圖上添加Geo數據。
你還能夠進行高級的時間序列分析,在數據中找到可視化關係,並利用機器學習功能探索異常狀況。更多詳情請看官方頁面。

1_rEYnHEQOHna7UwvGtNk_JQ.jpg

Kinbana控制檯

Logstash

Logstash是一個開源的服務器端數據處理流水線,它能夠同時從衆多的數據源中攝取數據,並對其進行轉換,而後發送至收集。

數據每每是分散在許多系統中,或者說是分散在許多系統中的多種格式的數據。在Logstash上能夠攝取日誌、度量衡、Web應用、數據存儲和各類AWS服務的數據,全部這些數據都是以連續流的方式進行攝取。它能夠與Netflow等不一樣的模塊一塊兒使用,以得到對網絡流量的洞察力。

它經過識別命名的字段來創建結構,動態地轉換和準備數據,不管格式如何,它都能動態地轉換和準備數據,並將其轉換爲收斂到一個通用的格式。您可使用X-Pack中的監控功能來深刻了解您的Logstash部署的指標。在概覽儀表板中,您能夠看到Logstash接收和發送的全部事件,以及關於內存使用狀況和正常運行時間的信息。而後,您能夠向下鑽,查看有關特定節點的統計信息。更多詳情請查看官方頁面。

1_zNZvLjNgbqljkeJ_7fG1dA.png
logstash node stats

Elasticsearch用例
Elasticsearch的使用方式多種多樣,我很難捕捉到全部最有趣的用例。爲了簡單起見,我選擇了三大類和三大公司的用例,若是你想了解更多,能夠看看他們的用例頁面。

主要的數據存儲。創建可搜索的目錄、文檔存儲和日誌系統。
補充技術:在SQL、mongoDB中添加可視化功能,將索引和搜索投向Hadoop,或者在kafka中添加處理和存儲。

補充技術:添加技術。在Elasticsearch中已經有日誌的狀況下,能夠添加度量、監控和分析功能。

Netflix
Netflix的消息傳遞系統背後使用的是Elasticsearch。消息傳遞系統分爲如下幾類。

  • 當你加入該服務時,你會收到的消息。
  • 一旦人們加入後,他們會收到關於他們可能喜歡的內容或服務器上的新功能的消息。
  • 一旦他們經過機器學習算法對你有了更多的瞭解,他們就會發送更多關於你可能喜歡或喜歡看的內容的個性化消息。
  • 若是你決定離開服務,他們會告訴你如何回來。

這都是經過電子郵件、應用推送通知和短信來完成的。爲了有效地完成這些工做,他們須要幾乎在第一時間知道信息傳遞過程當中可能出現的問題。基於這個緣由,Elasticsearch被引入了消息生命週期(以前他們使用的是分佈式grep)。
簡而言之,每一個狀態消息都被記錄在Elasticsearch上,適當的團隊能夠經過在Kibana上寫一個查詢來過濾每一個類別。
假設有一部新的電影被推出,在這種狀況下,"新標題 "消息必須傳遞給全部客戶。

使用Kibana,他們能夠實時看到有多少人收到了新消息的通知,以及消息傳遞的成功率。他們還能夠驗證一些消息傳遞失敗的緣由。這就引入了調查和處理問題的能力,好比2012年巴西的高信息發送失敗率的問題。
經過使用Kibana中的餅狀圖,他們幾乎可以在瞬間發現大量無效的會員失敗。經過與國家提供商的跟進,他們發現,7月29日,巴西許多地區的全部現有手機號碼的左邊都增長了數字9,而無論以前的初始數字是多少,他們都會在7月29日將數字9添加到全部的手機號碼中。這一變化是爲了增長像聖保羅這樣的大都市地區的號碼容量,從而消除了該地區長期存在的可用號碼短缺問題。
多虧了Elasticsearch,他們纔有能力在近乎實時的狀況下發現全部這些故障,並及時與供應商跟進。

Tinder

這是一個大型科技公司與Elasticsearch社區相互合做的例子。
Tinder的核心是一個搜索引擎。它的搜索查詢很複雜,有兩位數的事件,有上百個國家,有50多種語言。
大多數用戶的交互都會觸發Elasticsearch查詢。
根據地域的不一樣,Tinder有不一樣的交互方式。例如在亞洲,他們也會把它做爲語言交流或搜索導遊的方式。
因爲這個緣由,Tinder中的查詢是很是複雜的。他們必須是。

  • 個性化:機器學習算法在這方面也獲得了應用。
  • 基於位置:根據你在某個時間點上的位置來尋找匹配。
  • 雙向性:要知道哪些用戶會在對方身上掃碼,基本上是匹配的。
  • 實時性:就是實時性。整個交互必須在幾毫秒內發生,來自於海量的用戶,而且每個用戶都有不少變量關聯。

考慮到全部這些功能,後端現實是很是複雜的,從數據科學和機器學習,到雙向排名和地理定位,都是很是複雜的。Elasticsearch的基石是讓這些組件以一種很是有效的方式共同工做。

在這種狀況下,性能是一個障礙。爲此,他們一直在與Elasticsearch團隊合做,對不少參數進行微調,解決BUG。經過這種方式,他們一直在支持Elasticsearch社區,在改善Tinder自己的用戶體驗的同時,也幫助提高了整個Elastic stack產品的性能。

思科商業交付平臺
Elasticsearch是在2017年推出的,當時他們升級了商業平臺。他們從RDBMS切換到Elasticsearch,緣由以下。

  • 添加容錯工做在主動/主動模式下工做。RDBMS不是分佈式的,不具備容錯性。
  • 基於排名和類型超前 搜索來自多個數據庫的數據,在30/40個屬性上搜索,以得到亞秒級響應。
  • 全局搜索:若是在搜索中沒有指定特定對象,搜索引擎將針對多個對象查找結果。

思科情報部
一言以蔽之,思科情報部或Cisco Talos就是防止惡意軟件和垃圾郵件在 "互聯網管道 "中過分飽和的部門。

在這個思科部門,他們天天都會查看超過150萬個惡意軟件樣本。惡意有效載荷和垃圾郵件佔全部電子郵件流量的86%(天天超過6000億封電子郵件)。
Talos的威脅情報團隊是發現網絡上新的全球範圍內的漏洞並找出真正的壞人的人。

他們經過分析ssh終端和路由器蜜罐的流量模式,收集異常行爲,如使用蠻力攻擊來猜想用戶和密碼的企圖登陸等,來檢測新的漏洞。經過這種方式,他們記錄了攻擊者登陸後使用的命令,記錄了攻擊者在登陸後使用的命令,記錄了他們從服務器上下載和上傳的文件(雖然很難相信,但互聯網上的大多數憑證都是像行密碼和用戶名admin這麼簡單)。

就是他們在2015年阻止了所謂的SSHPsychos組織。這個組織經過從特定類別的IP產生SSH蠻力登陸嘗試,在整個互聯網上產生大量的掃描流量,這是衆所周知的。一旦他們可以以root身份進入服務器,他們就在下載並安裝DDoS根基程序。
自2017年以來,他們使用logstash和kibana來檢測和分析可能的全球規模線程。

結論
Elasticsearch是一個分佈式、RESTful和分析性搜索引擎,可以解決各類問題。
許多公司都在切換到它,並將其集成到當前的後端基礎設施中,由於:

  • 它容許使用聚合功能放大到你的數據,並對數十億條日誌線進行分析。
  • 它結合了不一樣類型的搜索:結構化搜索、非結構化搜索、Geo搜索、應用搜索、安全分析、度量衡和日誌。
  • 它的速度很是快,它能夠在你的筆記本電腦上以一樣的方式運行,只需一個節點,也能夠在有數百臺服務器的集羣上運行,使得原型設計很是容易。
  • 它使用標準的RESTful APIs和JSON。社區還用Java、Python、.NET、SQL、Perl、PHP等多種語言構建和維護客戶端。
  • 經過使用Elasticsearch-Hadoop(ES-Hadoop)鏈接器,能夠將Elasticsearch的實時搜索和分析功能應用到你的大數據上。
  • 像Kibana和Logstash這樣的工具可讓你經過使用圖表和執行顆粒化搜索,以很是簡單和直接的方式讓你的數據變得有意義。

在這篇文章中,咱們只是簡單介紹了Elasticsearch的能力和用例,以及可以解決的各類業務挑戰。若是你有興趣瞭解更多,或者想測試一下,請看一下他們的產品頁面和教程。若是你想了解如何從零搭建Elasticsearch,推薦你看這篇教程,寫的很全面。

相關文章
相關標籤/搜索