ElasticSearch能作什麼?從入門到精通-01ElasticSearch簡介

這是個人博客系列「 Elasticsearch簡介」的第一篇文章。本系列旨在指導您入門Elasticsearch,瞭解其功能,現實生活中的用例以及熟悉Elasticsearch堆棧中的其他組件。該博客將爲您簡要介紹Elasticsearch,其提供的解決方案以及選擇Elasticsearch服務的緣由。數據庫

若是你已經瞭解Elasticsearch是怎麼回事,開始着手搭建,那我推薦你看這篇:elasticsearch初學終極教程: 從零到一服務器

1、什麼是Elasticsearch?
這是新手碰到的第一個問題!我來歸納如下:
Elasticsearch是一個NoSql數據庫,其搜索引擎基於Lucene構建。Elasticsearch提供了一個分佈式的,基於JSON的實時,多租戶的全文搜索解決方案。
即便上面的定義僅用兩句話就結束了,但您仍是不會聽到不少術語。讓咱們拆分它們並分別進行探索
1 Lucene
簡而言之,Lucene是一個用Java編寫的庫。所以,下一個顯而易見的問題是它的做用和功能是什麼!
Lucene是一個搜索庫。這意味着,有一些用Java編寫的函數和方法已針對不一樣的搜索策略進行了優化。Lucene是有史以來最受歡迎的搜索庫。大多數開源/商業搜索實現都以Lucene爲骨幹。
所以,在閱讀了上面對Lucene的定義以後,出現了一系列問題,例如,若是Elasticsearch將Lucene用於搜索部分,爲何咱們不能將裸露Lucene用於咱們的目的呢?爲何選擇Elasticsearch?或者,Elasticsearch和Lucene有什麼區別?
這些問題的答案是,Lucene是一個編寫得很是出色的庫,這也使得在根據最終客戶需求進行定製時很難處理。所以,Elasticsearch所作的就是在Lucene之上構建一個API層,這將使Lucene方法和功能的使用變得很是簡單。
2.分佈式系統
除了在咱們的應用程序中配置Lucene的難以置信的困難以外,使Elasticsearch優於Lucene的緣由是前者的分佈式特性。從本質上講,分佈式意味着Elasticsearch能夠同時在不一樣的系統/節點上運行,並嘗試利用網絡中的系統資源來解決單個問題。Lucene不支持此功能,它是許多實現的主要障礙。
3.實時搜索
插入Elasticsearch的文檔幾乎能夠當即用於搜索。此功能開箱即用,無需外部/附加配置。
4.基於JSON
Elasticsearch使用基於JSON的通訊。這意味着它將JSON格式用於API和其餘通訊。因爲當今大多數Web應用程序和服務都以JSON進行通訊,所以這在使用和互操做性方面提供了極大的靈活性。
5.多租戶能力
多租戶是指一種應用程序的架構,其中服務器/雲上的應用程序實例能夠由具備不一樣級別可訪問性選項的多個租戶(用戶組)訪問。
2、Elasticsearch-用例
1.搜索
Elasticsearch的主要用例和目的是使「搜索」更快,更好。所以,搜索是Elasticsearch的第一個用例。它提供了許多搜索策略,例如開箱即用的大小寫相關/獨立搜索,部分匹配,自動建議搜索。一樣,根據用戶依賴的策略(例如選擇性加權,突出顯示等)對搜索進行大量定製很是容易在Elasticsearch中構建和實現。這些因素使其成爲搜索操做中最多見的選擇。
2.日誌收集/解析和分析
Elasticsearch與堆棧的其餘成員(例如Logstash)和Beats平臺使從各類來源收集數據變得很是容易和順暢。Logstash和Beats使來自各類來源的數據轉發變得容易,而且因爲它們與Elasticsearch的本機集成,在Elasticsearch中設置和開始收集數據很是容易。
Elasticsearch在這裏解決的問題是須要來自不一樣來源的不一樣數據處理程序。也就是說,若是您要從不一樣來源收集日誌並須要對日誌進行標準化,則可使用Elasticsearch的Logstash輕鬆處理此過程的數據轉發和數據解析解析應用。所以,使用這種方法能夠解決許多中間步驟,以及由此花費的時間和精力來製做標準格式。
使用Elasticsearch的可視化工具Kibana能夠輕鬆可視化已解析和保存的數據。Elasticsearch的功能內置了許多類型的分析功能,例如不一樣類型的聚合和許多統計計算,它們能夠應用於日誌,而後使用Kibana進行交互式可視化,以獲取有關日誌數據的有用看法。
3.內容鏈接器
就像上一節中提到的日誌同樣,Elasticsearch的下一個最大用例是來自衆多來源的數據收集
如Twitter,Sharepoint,JIVE等。有強大的社區鏈接器插件可提取數據,並具備來自各類來源的所需自定義並將其添加到Elasticsearch中。反過來,這不只能夠爲特定目的提供強大的數據收集,還可使其變得可搜索。例如:能夠未來自特定主題標籤的數據流式傳輸到Elasticsearch,而後,若是咱們可以對該數據進行快速的搜索,請想象簡化用戶所需內容的簡便性。衛報新聞社正在使用相似的實現方式,在那裏將其新聞的最新評論流式傳輸到Elasticsearch。而後,對這些數據進行分析並使其可搜索,以便他們能夠儘快找到文章的趨勢。
4.即時可視化
快速數據可視化功能可在Elasticsearch中創建數據索引後的幾分鐘內建立具備洞察力的儀表板,這也是Elasticsearch堆棧的主要用例之一。Elasticsearch提供的可視化工具是Kibana,它能夠依次加載來自Elasticsearch的數據並能夠對它們進行大量分析,而後將其呈現爲各類圖表,能夠按照任何順序排列以建立報告/儀表板。應用程序監視區域可使用Kibana -Elasticsearch組合找到大量用例,由於能夠實時檢測和應對異常或威脅。
3、爲何選擇Elasticsearch?
最後進入百萬美圓的問題,爲何要優先使用Elasticsearch?讓咱們看看最完美地回答這個問題的最重要因素:
1.可擴展性
使用Elasticsearch的主要優點之一是其可伸縮性。在大多數狀況下,只需花費至關長的搜索時間,您就能夠將數據索引到Elasticsearch中。是的,沒錯,在處理Elasticsearch的分佈式特性時不會遇到麻煩或痛苦。Elasticsearch自行處理縮放。例如,若是將一個新節點添加到集羣中,則無需設置路由,也無需進行重大的關鍵設置更改便可使其可發現並正常運行,Elasticsearch的主節點只需不多的干預便可解決此問題。 。
2.模式少
經過設計,Elasticsearch被設計爲無模式的應用程序。這意味着咱們無需事先提供用於將文檔放入Elasticsearch的架構。當涉及多個數據源時,這確實是一個巨大的緩解。在相似MongoDb的相似NoSQL數據庫中,咱們須要預先指定架構。在Elasticsearch中,咱們能夠對此部分感到歎爲觀止,而後就能夠開始爲數據創建索引了。若是沒有模式,Elasticsearch會自動爲文檔字段分配一個模式。
3.定製
這個問題的另外一個響亮答案,爲何是Elasticsearch?是它在其提供的解決方案中提供的自定義選項。例如,如前一節所述,它爲開發人員提供的搜索選項的自定義可使搜索的幾乎全部用例都包含在內。此外,Elasticsearch的數據通訊部分也能夠經過多種方式完成,包括默認的插件,插件或用戶開發的解決方案,能夠與之完美集成。
4.社區
最後但並不是最不重要的一點是,由Shay Banon和其餘一樣才華橫溢的開發人員領導的使人驚歎的社區使其成爲強大的開源社區之一。社區的努力建立了許多插件,插件和庫,從簡單的分析器插件到數據河實現。快速的響應式論壇和活躍的在線狀態也將節省大量開發時間。
4、結論
在本文中,我介紹了Elasticsearch,其要解決的問題和問題以及擁有Elasticsearch的使人信服的緣由。在該系列的下一篇文章中,我將向您簡要介紹Elasticsearch堆棧以及每一個組件的功能。
關於如何搭建Elasticsearch,搭建能夠看這篇網絡

相關文章
相關標籤/搜索