Home >> Blog >> elastic search 是什麼?
elastic search 是什麼?
介紹
當人們問“什麼是 Elastic search?”時,有些人可能會回答說它是“索引”、“搜尋引擎”、“分析資料庫”、“大資料解決方案”、“它快速且可擴展”,或者“它有點像Google”。您如果是SEO搜尋引擎優化從業人員,根據您對這項技術的熟悉程度,這些答案可能會讓您更接近“啊哈”時刻,或者讓您更加困惑。但事實是,所有這些答案都是正確的,這也是 Elastic search 吸引力的一部分。多年來,Elastic search 和圍繞它發展的被稱為“Elastic Stack”的組件生態系統已被用於越來越多的用例,從網站或文檔上的簡單搜尋、收集和分析日誌資料到商業智能用於資料分析和可視化的工具。最受歡迎的企業搜尋引擎和 10 個最受歡迎的 DBMS 之一?在這篇文章中,我們將通過了解 Elastic search 是什麼、它是如何工作以及如何使用它來回答這個問題。讓我們潛入水中。
什麼是彈性搜尋?
Elastic search 是一個基於 Apache Lucene 並用 Java 開發的分佈式開源搜尋和分析引擎。它最初是 Lucene 開源搜尋框架的可擴展版本,然後添加了水平擴展 Lucene 索引的能力。Elastic search 允許您快速、近乎實時地存儲、搜尋和分析大量資料,並在幾毫秒內給出答案。它能夠實現快速的搜尋響應,因為它不是直接搜尋文本,而是搜尋索引。它使用基於文檔而不是表和模式的結構,並帶有廣泛的 REST API 用於存儲和搜尋資料。從本質上講,您可以將 Elastic search 視為可以處理 JSON 請求並返回 JSON 資料的服務器。
Elastic search 是如何工作的?
為了更好地理解 Elastic search 的工作原理,讓我們介紹一些關於它如何組織資料及其後端組件的基本概念。
邏輯概念
文件
文檔是可以在 Elastic search 中被索引的基本信息單位,以 JSON 表示,JSON 是全球互聯網資料交換格式。您可以將文檔想像成關係資料庫中的一行,代表一個給定的實體——您正在搜尋的東西。在 Elastic search 中,文檔不僅可以是文本,還可以是任何以 JSON 編碼的結構化資料。這些資料可以是數字、字符串和日期之類的東西。每個文檔都有一個唯一的 ID 和給定的資料類型,它描述了文檔是什麼類型的實體。例如,文檔可以表示百科全書文章或來自 Web 服務器的日誌條目。
指數
索引是具有相似特徵的文檔的集合。索引是您可以在 Elastic search 中查詢的最高級別實體。您可以將索引視為類似於關係資料庫模式中的資料庫。索引中的任何文檔通常都是邏輯相關的。例如,在電子商務網站的上下文中,您可以為客戶創建一個索引,為產品創建一個索引,為訂單創建一個索引,等等。索引由一個名稱標識,該名稱用於在對其中的文檔執行索引、搜尋、更新和刪除操作時引用該索引。
倒排索引
Elastic search 中的索引實際上就是所謂的倒排索引,它是所有搜尋引擎工作的機制。它是一種資料結構,用於存儲從內容(例如單詞或數字)到其在文檔或一組文檔中的位置的映射。基本上,它是一種類似於 hashmap 的資料結構,可以將您從單詞引導到文檔。倒排索引不直接存儲字符串,而是將每個文檔拆分為單獨的搜尋詞(即每個詞),然後將每個搜尋詞映射到出現這些搜尋詞的文檔。例如,在下圖中,“最佳”一詞出現在文檔 2 中,因此它被映射到該文檔。這可以快速查找在給定文檔中的何處可以找到搜尋詞。通過使用分佈式倒排索引,
後端組件
集群
Elastic search 集群是一組連接在一起的一個或多個節點實例。Elastic search 集群的強大之處在於跨集群中的所有節點分配任務、搜尋和索引。
節點
節點是作為集群一部分的單個服務器。節點存儲資料並參與集群的索引和搜尋功能。可以通過不同方式配置 Elastic search 節點:
主節點— 控制 Elastic search 集群並負責集群範圍內的所有操作,例如創建/刪除索引和添加/刪除節點。
資料節點——存儲資料並執行與資料相關的操作,例如搜尋和聚合。
客戶端節點——將集群請求轉發到主節點,將資料相關請求轉發到資料節點。
碎片
Elastic search 提供了將索引細分為多個稱為分片的部分的能力。每個分片本身就是一個功能齊全且獨立的“索引”,可以託管在集群內的任何節點上。通過將索引中的文檔分佈在多個分片上,並將這些分片分佈在多個節點上,Elastic search 可以確保冗餘,這既可以防止硬體故障,又可以在將節點添加到集群時增加查詢容量。
複製品
Elastic search 允許您製作索引分片的一個或多個副本,這些副本稱為“副本分片”或簡稱為“副本”。基本上,副本分片是主分片的副本。索引中的每個文檔都屬於一個主分片。副本提供資料的冗余副本以防止硬體故障並增加處理讀取請求(如搜尋或檢索文檔)的容量。
彈性堆棧 (ELK)
Elastic search 是 Elastic Stack 的核心組件,Elastic Stack 是一組用於資料攝取、擴充、存儲、分析和可視化的開源工具。它通常在其組件 Elastic search、Logstash 和 Kibana 之後被稱為“ELK”堆棧,現在還包括 Beats。儘管其核心是搜尋引擎,但用戶開始使用 Elastic search 來獲取日誌資料,並希望有一種方法可以輕鬆地攝取和可視化這些資料。
木花
木花是 Elastic search 的資料可視化和管理工具,提供實時直方圖、折線圖、餅圖和地圖。它可以讓您可視化您的 Elastic search 資料並瀏覽 Elastic Stack。您可以從一個問題開始,找出交互式可視化將引導您的方向,從而選擇賦予資料形狀的方式。例如,由於 Kibana 經常用於日誌分析,它允許您回答有關您的網絡點擊來自何處、您的分發 URL 等問題。如果您不是在 Elastic search 之上構建自己的應用程式,那麼 Kibana 是一種通過強大而靈活的 UI 搜尋和可視化索引的好方法。但是,一個主要缺點是每個可視化只能針對單個索引/索引模式工作。因此,如果您的索引具有完全不同的資料,您必須為每個創建單獨的可視化。對於更高級的用例,Knowi是一個不錯的選擇。它允許您跨多個索引連接 Elastic search 資料並將其與其他 SQL/NoSQL/REST-API 資料源混合,然後在業務用戶友好的 UI 中創建可視化
日誌存儲
Logstash 用於聚合和處理資料並將其發送到 Elastic search。它是一個開源的服務器端資料處理管道,可同時從多個來源獲取資料,對其進行轉換,然後將其發送給收集。它還通過識別命名字段來構建結構並轉換它們以收斂於通用格式,從而轉換和準備資料,無論格式如何。例如,由於資料通常以各種格式分散在不同的系統中,Logstash 允許您將不同的系統聯繫在一起,如 Web 服務器、資料庫、亞馬遜服務等,並以連續流的方式將資料發佈到需要去的任何地方。
節拍
Beats 是一組輕量級、單一用途的資料傳輸代理,用於將資料從數百或數千台機器和系統發送到 Logstash 或 Elastic search。Beats 非常適合收集資料,因為它們可以放在您的服務器上、與您的容器一起使用,或者作為函數部署,然後將資料集中在 Elastic search 中。例如,Filebeat 可以位於您的服務器上,在日誌文件進入時對其進行監控、解析並近乎實時地導入 Elastic search。
Elastic search 是做什麼用的?
現在我們對 Elastic search 是什麼、其背後的邏輯概念及其架構有了大致的了解,我們對為什麼以及如何將它用於各種用例有了更好的了解。下面,我們將研究 Elastic search 的一些主要用例,並提供公司如何使用它的示例。
主要用例
應用程式搜尋——適用於嚴重依賴搜尋平台來訪問、檢索和報告資料的應用程式。
網站搜尋——存儲大量內容的網站發現 Elastic search 是一個非常有用的工具,可以進行有效和準確的搜尋。毫不奇怪,Elastic search 在站點搜尋領域穩步取得進展。
企業搜尋——Elastic search 允許企業範圍的搜尋,包括文檔搜尋、電子商務產品搜尋、博客搜尋、人員搜尋以及您能想到的任何形式的搜尋。事實上,它已經穩步滲透並取代了我們日常使用的大多數熱門網站的搜尋解決方案。從更特定於企業的角度來看,Elastic search 在公司內部網中取得了巨大成功。
日誌記錄和日誌分析——正如我們所討論的,Elastic search 通常用於以近實時和可擴展的方式攝取和分析日誌資料。它還提供有關日誌指標的重要操作見解,以推動行動。
基礎設施指標和容器監控——許多公司使用 ELK 堆棧來分析各種指標。這可能涉及收集因用例而異的多個性能參數的資料。
安全分析——Elastic search 的另一個主要分析應用是安全分析。可以使用 ELK 堆棧分析訪問日誌和有關係統安全的類似日誌,從而更全面地實時了解系統中發生的情況。
業務分析——ELK Stack 中的許多內置功能使其成為業務分析工具的理想選擇。但是,在大多數組織中實施該產品有一個陡峭的學習曲線。在公司擁有除 Elastic search 之外的多個資料源的情況下尤其如此——因為 Kibana 僅適用於 Elastic search 資料。Knowi是一個很好的替代方案,它是一個與 Elastic search 原生集成的分析平台,即使是非技術業務用戶也可以在沒有 ELK Stack 的先驗知識或專業知識的情況下創建可視化並對 Elastic search 資料執行分析。
公司用例
網飛
Netflix 在各種用例中依賴 ELK Stack 來監控和分析客戶服務操作和安全日誌。例如,Elastic search 是他們消息系統背後的底層引擎。此外,該公司選擇 Elastic search 是因為它的自動分片和復制、靈活的模式、良好的擴展模型以及具有許多插件的生態系統。Netflix 穩步增加了對 Elastic search 的使用,從幾個孤立的部署增加到由數百個節點組成的十幾個集群。
易趣
憑藉無數利用 Elastic search 作為主幹的關鍵業務文本搜尋和分析用例,eBay 創建了一個自定義的“Elastic search 即服務”平台,以便在其內部基於 OpenStack 的雲平台上輕鬆配置 Elastic search 集群。
沃爾瑪
Walmart 利用 Elastic Stack 揭示其資料的隱藏潛力,從而獲得有關客戶購買模式、跟踪商店績效指標和假日分析的洞察——所有這些都幾乎是實時的。它還利用 ELK 的安全功能來實現 SSO 安全、異常檢測警報和 DevOps 監控
概括
那麼什麼是 Elastic search?在這篇文章中,我們試圖通過了解它是什麼、它是如何工作以及如何使用它來回答這個問題,但我們仍然只是勉強了解它的所有內容。但根據我們所介紹的內容,我們可以簡要總結一下,Elastic search 的核心是一個搜尋引擎,其底層架構和組件使其快速且可擴展,位於互補工俱生態系統的核心,這些工具可以一起用於許多用例,包括搜尋、分析以及資料處理和存儲。如果您有興趣了解有關 Elastic search 的更多信息並親自嘗試一下,可以從這裡開始. 對於需要跨多個索引和其他 SQL/NoSQL/REST-API 資料源加入和混合 Elastic search 資料的更高級用例,請查看Knowi,這是一個與 Elastic search 原生集成的分析平台,技術人員均可訪問和非技術用戶。搜尋愉快!