Elasticsearch能干什么,關於Elasticsearch及實例應用


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

 

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

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

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

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

ElasticSearch作為一個NOSQL數據庫,因為它具有以下特點。

  • 開箱即用
  • 擁有龐大的用戶社區
  • 與JSON的兼容性
  • 超級多的案例可參考

后端組件
為了更好地了解Elasticsearch及其使用方法,對主要的后台組件有一個大致的了解會有助於你更好的理解它。

節點
節點是一個單一的服務器,它是集群的一部分。節點存儲我們的數據,並參與集群的索引和搜索功能。就像集群一樣,節點由一個名字來標識,默認情況下,這個名字是一個隨機的UUUID,在啟動時分配給節點。我們可以根據需要編輯默認的節點名稱。

集群
集群是一個或多個節點的集合,這些節點共同承載着你的整個數據,並提供聯合索引和搜索功能。可以有N個具有相同集群名稱的節點。
Elasticsearch 在分布式環境中運行:通過跨群集復制,一個輔助群集可以作為熱備份而自動啟動。

索引
索引是一個具有相似特征的文檔的集合。例如,我們可以有一個特定客戶的索引,另一個索引是針對特定客戶,另一個索引是針對產品信息,另一個索引是針對不同類型的數據。在執行索引搜索、更新和刪除操作時,一個索引會有一個唯一的名稱來標識。在一個集群中,我們可以根據自己的需要定義任意多的索引。索引類似於RDBMS中的數據庫。

文檔
文檔是一個基本的信息單位,可以編制索引。例如,你可以有一個關於你的產品的索引,然后是客戶的文檔。這個文檔是用JSON表示的。
在一個索引中,你可以存儲盡可能多的文檔,這樣,在同一個索引中,你可以有一個單一產品的文檔,另一個是單一訂單的文檔。

碎片和副本
Elasticsearch 提供了將你的索引細分為多個碎片的能力。當你創建一個索引時,你可以簡單地定義你想要的碎片數量。每個碎片本身就是一個功能齊全且獨立的 “索引”,可以托管在集群中的任何節點上。
碎片很重要,因為它允許橫向分割你的數據量,也可能在多個節點上進行平行化操作,從而提高性能。碎片也可以通過將你的索引的多個副本變成復制的碎片來使用,這在雲環境中可以提供高可用性。

彈性堆棧
雖然搜索引擎的核心是搜索引擎,但用戶開始使用Elasticsearch做日志,希望能夠方便地攝取和可視化。Elasticsearch、Logstash、Kibana是彈性堆棧的主要組成部分,被稱為ELK。

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

在這里插入圖片描述

Kinbana控制台

Logstash

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

數據往往是分散在許多系統中,或者說是分散在許多系統中的多種格式的數據。在Logstash上可以攝取日志、度量衡、Web應用、數據存儲和各種AWS服務的數據,所有這些數據都是以連續流的方式進行攝取。它可以與Netflow等不同的模塊一起使用,以獲得對網絡流量的洞察力。

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

在這里插入圖片描述logstash node stats
主要的數據存儲。建立可搜索的目錄、文檔存儲和日志系統。
補充技術:在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,推薦你看這篇教程,寫的很全面。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM