我的Elasticsearch系列文章,逐漸更新中,歡迎關注
0A.關於Elasticsearch及實例應用
00.Solr與ElasticSearch對比
01.ElasticSearch能做什么?
02.Elastic Stack功能介紹
03.如何安裝與設置Elasticsearch API
04.如果通過elasticsearch的head插件建立索引_CRUD操作
05.Elasticsearch多個實例和head plugin使用介紹
這是我的博客系列“ Elasticsearch簡介”的第一篇文章。本系列旨在指導您入門Elasticsearch,了解其功能,現實生活中的用例以及熟悉Elasticsearch堆棧中的其余組件。該博客將為您簡要介紹Elasticsearch,其提供的解決方案以及選擇Elasticsearch服務的原因。
如果你已經了解Elasticsearch是怎么回事,開始着手搭建,那我推薦你看這篇:elasticsearch初學終極教程: 從零到一
一、什么是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.多租戶能力
多租戶是指一種應用程序的架構,其中服務器/雲上的應用程序實例可以由具有不同級別可訪問性選項的多個租戶(用戶組)訪問。
二、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組合找到大量用例,因為可以實時檢測和應對異常或威脅。
三、為什么選擇Elasticsearch?
最后進入百萬美元的問題,為什么要優先使用Elasticsearch?讓我們看看最完美地回答這個問題的最重要因素:
1.可擴展性
使用Elasticsearch的主要優勢之一是其可伸縮性。在大多數情況下,只需花費相當長的搜索時間,您就可以將數據索引到Elasticsearch中。是的,沒錯,在處理Elasticsearch的分布式特性時不會遇到麻煩或痛苦。Elasticsearch自行處理縮放。例如,如果將一個新節點添加到集群中,則無需設置路由,也無需進行重大的關鍵設置更改即可使其可發現並正常運行,Elasticsearch的主節點只需很少的干預即可解決此問題。 。
2.模式少
通過設計,Elasticsearch被設計為無模式的應用程序。這意味着我們無需事先提供用於將文檔放入Elasticsearch的架構。當涉及多個數據源時,這確實是一個巨大的緩解。在類似MongoDb的類似NoSQL數據庫中,我們需要預先指定架構。在Elasticsearch中,我們可以對此部分感到嘆為觀止,然后就可以開始為數據建立索引了。如果沒有模式,Elasticsearch會自動為文檔字段分配一個模式。
3.定制
這個問題的另一個響亮答案,為什么是Elasticsearch?是它在其提供的解決方案中提供的自定義選項。例如,如前一節所述,它為開發人員提供的搜索選項的自定義可以使搜索的幾乎所有用例都包含在內。此外,Elasticsearch的數據通信部分也可以通過多種方式完成,包括默認的插件,插件或用戶開發的解決方案,可以與之完美集成。
4.社區
最后但並非最不重要的一點是,由Shay Banon和其他同樣才華橫溢的開發人員領導的令人驚嘆的社區使其成為強大的開源社區之一。社區的努力創建了許多插件,插件和庫,從簡單的分析器插件到數據河實現。快速的響應式論壇和活躍的在線狀態也將節省大量開發時間。
四、結論
在本文中,我介紹了Elasticsearch,其要解決的問題和問題以及擁有Elasticsearch的令人信服的原因。在該系列的下一篇文章中,我將向您簡要介紹Elasticsearch堆棧以及每個組件的功能。
關於如何搭建Elasticsearch,搭建可以看這篇