1. 程式人生 > >Elasticsearch7.2中文文件翻譯(一):Elasticsearch簡介

Elasticsearch7.2中文文件翻譯(一):Elasticsearch簡介

為了搜尋和分析,你懂得!!!

簡介

Elasticsearch是Elastic Stack核心的分散式搜尋和分析引擎。Logstash和Beats有助於收集,聚合和豐富您的資料並將其儲存在Elasticsearch中。Kibana使您能夠以互動方式探索,視覺化和分享資料洞察,並管理和監控堆疊。Elasticsearch是索引,搜尋和分析魔術發生的地方。

Elasticsearch為所有型別的資料提供實時搜尋和分析。無論您是結構化文件還是非結構化文字,數字資料或地理空間資料,Elasticsearch都可以以支援快速搜尋的方式有效地儲存和索引它。您可以遠遠超出簡單的資料檢索和聚合資訊,以發現數據中的趨勢和模式。隨著您的資料和查詢量的增長,Elasticsearch的分散式特性使您的部署能夠與其一起無縫地增長。

雖然不是每個問題都是搜尋問題,但Elasticsearch提供了處理各種用例資料的速度和靈活性:

  • 將搜尋框新增到應用或網站
  • 儲存和分析日誌,指標和安全事件資料
  • 使用機器學習實時自動建模資料行為
  • 使用Elasticsearch作為儲存引擎自動化業務工作流程
  • 使用Elasticsearch作為地理資訊系統(GIS)管理,整合和分析空間資訊
  • 使用Elasticsearch作為生物資訊學研究工具儲存和處理遺傳資料 我們對人們使用搜索的新穎方式感到驚訝。但是,無論您的用例是否與其中一個相似,或者您使用Elasticsearch來解決新問題,您在Elasticsearch中處理資料,文件和索引的方式都是相同的。

資料輸入:檔案和索引

Elasticsearch是一個分散式文件儲存。Elasticsearch不是將資訊儲存為列資料行,而是儲存已經序列化為JSON文件的複雜資料結構。當群集中有多個Elasticsearch節點時,儲存的文件將分佈在群集中,並且可以從任何節點立即訪問。

儲存文件時,它會在1秒內實時索引並完全可搜尋。Elasticsearch使用稱為倒排索引的資料結構,支援非常快速的全文搜尋。倒排索引列出任何文件中出現的每個唯一單詞,並標識每個單詞出現的所有文件。

索引可以被視為優化的文件集合,每個文件都是欄位的集合,這些欄位是包含資料的鍵值對。預設情況下,Elasticsearch會為每個欄位中的所有資料編制索引,並且每個索引欄位都具有專用的優化資料結構。例如,文字欄位儲存在反向索引中,數字和地理欄位儲存在BKD樹中。使用每個欄位的資料結構來彙編和返回搜尋結果的能力使Elasticsearch如此之快。

Elasticsearch還具有無模式的能力,這意味著可以索引文件而無需顯式指定如何處理文件中可能出現的每個不同欄位。啟用動態對映後,Elasticsearch會自動檢測並向索引新增新欄位。這種預設行為使您可以輕鬆索引和瀏覽資料 - 只需開始索引文件,Elasticsearch將檢測並將布林值,浮點和整數值,日期和字串對映到相應的Elasticsearch資料型別。

但是,最終,您比Elasticsearch更瞭解您的資料以及您希望如何使用它。您可以定義規則來控制動態對映並顯式定義對映,以完全控制欄位的儲存和索引方式。

定義自己的對映使您能夠:

  • 區分全文字串欄位和精確值字串欄位
  • 執行特定於語言的文字分析
  • 優化欄位以進行部分匹配
  • 使用自定義日期格式
  • 使用諸如geo_point和geo_shape無法自動檢測的資料型別 為不同目的以不同方式索引相同欄位通常很有用。例如,您可能希望將字串欄位索引為全文搜尋的文字欄位和用於排序或聚合資料的關鍵字欄位。或者,您可以選擇使用多個語言分析器來處理包含使用者輸入的字串欄位的內容。

在索引期間應用於全文欄位的分析鏈也在搜尋時使用。查詢全文欄位時,查詢文字在索引中查詢術語之前會進行相同的分析。

資訊輸出:搜尋和分析

雖然您可以將Elasticsearch用作文件儲存並檢索文件及其元資料,但真正的強大功能來自於能夠輕鬆訪問基於Apache Lucene搜尋引擎庫構建的全套搜尋功能。

Elasticsearch提供了一個簡單,一致的REST API,用於管理叢集,索引和搜尋資料。出於測試目的,您可以直接從命令列或通過Kibana中的Developer Console輕鬆提交請求。從您的應用程式中,您可以使用 Elasticsearch客戶端 作為您選擇的語言:Java,JavaScript,Go,.NET,PHP,Perl,Python或Ruby。

搜尋您的資料 Elasticsearch REST API支援結合了兩者的結構化查詢,全文查詢和複雜查詢。結構化查詢類似於可以在SQL中構造的查詢型別。例如,您可以搜尋索引中的gender和age欄位,並按欄位employee對匹配項進行排序hire_date。全文查詢查詢與查詢字串匹配的所有文件,並按相關性對其進行返回 - 與搜尋字詞的匹配程度。

除了搜尋單個術語外,您還可以執行短語搜尋,相似性搜尋和字首搜尋,並獲取自動填充建議。

是否要搜尋地理空間或其他數字資料?Elasticsearch將優化資料結構中的非文字資料編入索引,以支援高效能的地理和數字查詢。

您可以使用Elasticsearch的全面JSON樣式查詢語言(查詢DSL)訪問所有這些搜尋功能。您還可以構建SQL樣式的查詢以在Elasticsearch內本地搜尋和聚合資料,JDBC和ODBC驅動程式使各種第三方應用程式能夠通過SQL與Elasticsearch進行互動。

分析您的資料 通過Elasticsearch聚合,您可以構建複雜的資料摘要,並深入瞭解關鍵指標,模式和趨勢。聚合使您無法找到眾所周知的“大海撈針”,而是回答以下問題:

  • 大海撈針有多少針?

  • 針的平均長度是多少?

  • 根據製造商細分的針的中位長度是多少?

  • 在過去的六個月裡,每天有多少針被加到草堆裡? 您還可以使用聚合來回答更微妙的問題,例如:

  • 你最受歡迎的針頭製造商是什麼?

  • 是否有任何異常或異常的針叢? 由於聚合利用了用於搜尋的相同資料結構,因此它們也非常快。這使您可以實時分析和視覺化資料。您的報告和儀表板會隨著資料更改而更新,以便您可以根據最新資訊採取措施。

更重要的是,聚合與搜尋請求一起執行。您可以在同一資料中,在單個請求中同時搜尋文件,過濾結果和執行分析。並且因為聚合是在特定搜尋的上下文中計算的,所以您不僅要顯示所有70針的數量,而是顯示與使用者的搜尋條件匹配的70針的數量 - 例如,所有尺寸70 不粘刺繡針。

但是等等,還有更多的 想要自動分析您的時間序列資料?您可以使用 機器學習功能在資料中建立正常行為的準確基線,並識別異常模式。通過機器學習,您可以檢測到:

與值,計數或頻率的時間偏差相關的異常 統計稀缺 一個人口的不尋常行為 最好的部分?您無需指定演算法,模型或其他與資料科學相關的配置即可完成此操作。

可伸縮性和彈性:叢集,節點和分片

Elasticsearch始終可用,可根據您的需求進行擴充套件。它通過自然分配來實現這一點。您可以將伺服器(節點)新增到群集以增加容量,Elasticsearch會自動在所有可用節點上分配資料和查詢負載。無需徹底檢查您的應用程式,Elasticsearch瞭解如何平衡多節點群集以提供規模和高可用性。節點越多,越好。

這是如何運作的?在封面下,Elasticsearch索引實際上只是一個或多個物理分片的邏輯分組,其中每個分片實際上是一個自包含的索引。通過跨多個分片在索引中分發文件,並將這些分片分佈在多個節點上,Elasticsearch可以確保冗餘,這可以防止硬體故障,並在節點新增到群集時提高查詢容量。隨著叢集的增長(或收縮),Elasticsearch會自動遷移分片以重新平衡叢集。

有兩種型別的分片:原色和副本。索引中的每個文件都屬於一個主分片。副本分片是主分片的副本。副本提供資料的冗餘副本,以防止硬體故障並增加服務讀取請求(如搜尋或檢索文件)的容量。

索引中的主分片數在建立索引時是固定的,但副本分片的數量可以隨時更改,而不會中斷索引或查詢操作。

這取決於... ...

關於分片大小和為索引配置的主分片數量,存在許多效能考慮因素和折衷方案。分片越多,維護這些索引的開銷就越大。分片大小越大,當Elasticsearch需要重新平衡群集時,移動分片所需的時間越長。

查詢大量小分片使得每個分片的處理速度更快,但查詢意味著更多的開銷,因此查詢較少數量的較大分片可能會更快。簡而言之......這取決於。

作為一個起點:

  • 旨在將平均分片大小保持在幾GB到幾十GB之間。對於具有基於時間的資料的用例,通常會看到20GB到40GB範圍內的分片。
  • 避免大量碎片問題。節點可以容納的分片數量與可用堆空間成比例。作為一般規則,每GB堆空間的分片數應小於20。 確定用例的最佳配置的最佳方法是 使用您自己的資料和查詢進行測試。

在容災的情況下 出於效能原因,群集中的節點需要位於同一網路上。在不同資料中心的節點之間平衡群集中的分片只需要太長時間。但是高可用性架構要求您避免將所有雞蛋放在一個籃子裡。如果在一個位置發生重大中斷,則另一個位置的伺服器需要能夠接管。無縫連線。答案?跨群集複製(CCR)。

CCR提供了一種自動將索引從主群集同步到可作為熱備份的輔助遠端群集的方法。如果主群集出現故障,則輔助群集可以接管。您還可以使用CCR建立輔助群集,以便在地理位置接近使用者時提供讀取請求。

跨群集複製是主動 - 被動的。主群集上的索引是活動的leader索引並處理所有寫入請求。複製到輔助群集的索引是隻讀關注者。

維護和管理 與任何企業系統一樣,您需要工具來保護,管理和監控您的Elasticsearch叢集。整合到Elasticsearch中的安全性,監控和管理功能使您可以將Kibana 用作管理叢集的控制中心。類似的特徵資料彙總和指標生命週期管理 幫助您明智隨著時間的推移管理您的資料。

Elasticsearch7.2系列文章:https://www.xugj520.cn/cate