天天看點

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

我的Elasticsearch系列文章,逐漸更新中,歡迎關注

0A.關于Elasticsearch及執行個體應用

00.Solr與ElasticSearch對比

01.ElasticSearch能做什麼?

02.Elastic Stack功能介紹

03.如何安裝與設定Elasticsearch API

04.如果通過elasticsearch的head插件建立索引_CRUD操作

05.Elasticsearch多個執行個體和head plugin使用介紹

06.當Elasticsearch進行文檔索引時,它是如何工作的?

07.Elasticsearch中的映射方式—簡潔版教程

08.Elasticsearch中的分析和分析器應用方式

09.Elasticsearch中建構自定義分析器

10.Kibana科普-作為Elasticsearhc開發工具

11.Elasticsearch查詢方法

12.Elasticsearch全文查詢

13.Elasticsearch查詢-術語級查詢

14.第14篇-Python中的Elasticsearch入門

15.使用Django進行ElasticSearch的簡單方法

16.關于Elasticsearch的6件不太明顯的事情

17.使用Python的初學者Elasticsearch教程

18.用ElasticSearch索引MongoDB,一個簡單的自動完成索引項目

19.Kibana對Elasticsearch的實用介紹

20.不和諧如何索引數十億條消息

21.使用Django進行ElasticSearch的簡單方法

另外Elasticsearch入門,我強烈推薦ElasticSearch入門教程和這篇優秀的REST API設計指南 給你,這兩個指南都是非常想盡的入門手冊。

這是我的部落格系列“ 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,搭建可以看這篇

繼續閱讀