ElasticSearch7.6學習日記之ElasticSearch簡介

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_pointgeo_shape

爲了不同的目的以不同的方式對同一字段建立索引通常很有用。例如,您可以希望將一個字符串字段索引爲全文搜索的文本字段和索引關鍵字,以便對數據進行排序或彙總。或者,您可以選擇使用多個語言分析器來處理包含用戶輸入的字符串字段的內容。

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

信息輸出:搜索和分析

雖然您可以將ElasticSearch用作文檔存儲並檢索文檔及其元數據,但是它的真正強大之處在於能夠輕鬆訪問基於Apache Lucene搜索引擎庫構建的全套搜索功能。

Elasticsearch提供了一個簡單,一致的REST API,用於管理您的集羣以及索引和搜索數據。爲了進行測試,你可以從命令行方式或者通過Kibana中的控制檯提交請求。在您的應用程序中,您可以使用ElasticSearch客戶端作爲您選擇的語言:Java,JavaScript,Go,.NET,PHP,Perl,Python或Ruby。

搜索數據

ElasticSearch REST API支持結構化查詢、全文查詢和結合了兩者的複合查詢。結構化查詢類似於您可以直接在SQL中構造查詢字段。例如,您可以搜索索引中的gender和age字段,並按字段employee對匹配項進行排序hire_date。全文查詢查找與查詢字符串匹配的所有文檔,並按相關性對其進行返回 - 與搜索字詞的匹配程度。

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

是否要搜索地理空間或其他數字數據?Elasticsearch在支持高性能地理和數字查詢的優化數據結構中索引非文本數據。

您可以使用Elasticsearch全面的JSON樣式查詢語言(Query 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 用作管理集羣的控制中心。類似的特徵數據彙總和指標生命週期管理 幫助您明智隨着時間的推移管理您的數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章