第一章 Elasticsearch 簡介

簡介

Elasticsearch 是Elastic Stack核心的分佈式搜索和分析引擎。Logstash 和 Beats有助於收集、聚合和豐富您的數據並將其存儲在Elasticsearch中。使用Kibana,您可以交互式地探索、可視化和共享數據的見解、並且管理和監視系統。Elasticsearch是建立索引、搜索和分析的工具。
Elasticsearch 爲所有類型的數據提供實時搜索和分析。無論是結構化文本數據還是非結構化數據或是地理位置數據,Elasticsearch都能以支持快速搜索的方式有效的對其進行存儲和索引。你不僅可以進行簡單的數據索引,還可以彙總信息來發現數據中的趨勢和模式。隨着數據和查詢量的增長,Elasticsearch的分佈式特性使您的部署可以無縫隙增長
雖然並非每個問題都是搜索問題,但是Elasticsearch可以提供足夠的速度和靈活性來處理各種用例中的數據:

  1. 將搜索添加到應用或網站
  2. 存儲和分析日誌、指標、安全事件數據
  3. 使用機器學習自動實時建模數據行爲
  4. 使用Elasticsearch作爲存儲引擎來自動化業務工作流程
  5. 使用Elasticsearch 作爲地理信息系統管理,集成和分析空間信息
  6. 使用Elasticsearch 作爲生物信息學研究工具來存儲和處理遺傳數據

人們使用搜索的新穎方式使我們感到驚訝。但是,無論您的用例與其中之一相似,還是您正在使用Elasticsearch 解決新的問題,在Elasticsearch 中處理數據、文檔、索引的方式都是相同的

基本概念

Elasticsearch 是面向文檔的,核心概念和關係型數據庫的類比;在Elasticsearch中,先前的版本會有type的概念,類似於mysql中的表,但已經被逐漸棄用。**可以在實踐中,慢慢體會這些基本概念。**這裏所描述的不過是筆者,自己目前的體會而已。

mysql Elasticsearch 示例(可以查看第二章的示例數據)
database indice(索引) bank
rows document account1
columns key state

數據存儲到Elasticsearch :文檔和索引

Elasticsearch 是一個分佈式文檔存儲系統。 Elasticsearch 不會將信息存儲爲列數據的行,而是存儲爲已序列化爲JSON文檔的負載數據結構。當集羣中有多個Elasticsearch 節點時,存儲的文檔會分佈到整個集羣中,並且從任何節點都可以訪問。

存儲特性

存儲文檔時,Elasticsearch 幾乎實時的對其進行索引和完全搜索。Elasticsearch 使用成爲倒排索引的數據結構,該結構支持非常快速的全文本搜索。反向索引列出了出現任何文檔中的每個唯一單詞,並標示量 每個單詞出現的所有文檔。

索引特性

索引可以認爲是文檔的優化集合,每個文檔都是字段的集合,這些字段是包含數據的鍵值對。默認情況下,Elasticsearch 對每個字段中的所有數據建立索引,並且每個索引字段都具有專門的優化數據結構。例如:文本字段存儲在倒排索引中、數字字段和地理字段存儲在BKD樹(Bkd樹是一種動態索引數據結構,能高效且可伸縮地索引大的多維點數據集。它有 (1) 極高的空間利用率和 (2) 優秀的查詢、(3) 更新性能——且這三種屬性在高強度更新下依舊成立。)中。由於按字段數據結構進行組合,並返回搜索結果的能力,使得Elasticsearch才能如此之快。
schema-less

其他特性

Elasticsearch 還具有無模式(schema-less)能力,這意味着可以爲文檔創建索引,而無需明確指定如歌處理文檔中可能出現的每個不同的字段。啓動動態映射後,Elasticsearch 自動檢測並將新字段添加到索引。這個默認行爲使索引和瀏覽數據變得很容易,只需開始建立索引文檔,Elasticsearch 就會檢測數據所對應的類型(意思是說,不需要明確指定每個字段確定的數據類型,Elasticsearch 有能力主動識別存儲的數據類型)將其映射到Elasticsearch 數據類型中。

定義自己的映射

  1. 區分全文字符串字段和精確字符串字段
  2. 執行特定語言的文本分析
  3. 優化字段以進行部分匹配
  4. 使用自定義日期格式
  5. 使用無法自動檢測到的數據類型。如:geo_point、geo_shape(地理位置)

總結

爲不同的目的,利用不同的方式對同一字段建立索引非常有用。例如,您可能希望將一個字符串字段索引爲全文搜索的文本字段,以及作爲排序或彙總數據的關鍵字字段。或者,使用多個語言分析器來處理包含用戶輸入的字符串字段的內容。
在搜索時,也會使用在索引期間應用於全文字段的分析鏈。當您查詢全文字段時,對查詢文本進行相同的分析,然後再在索引中查找術語。

搜索和分析

雖然您可以將Elasticsearch 用作文檔存儲並檢索文檔及其元數據,但真正強大之處在於能夠輕鬆訪問基於Apache Lucene所搜引擎庫構建的全套搜索功能。Elasticsearch 提供了一個簡單的REST API,用於管理您的集羣以及索引和搜索功能。

搜索數據

  1. Elasticsearch REST API支持結構化查詢,全文查詢以及結合兩者的複雜查詢。結構化查詢類似於您可以在SQL中構造的查詢類型。全文查詢會找到所有與查詢字符串匹配的文檔,並按相關性(搜索關鍵字和文檔的匹配程度)對它們進行返回。
  2. 除了搜索單個術語外,還可以執行短語搜索,相似性搜索和前綴搜索,並獲得自動完成建議。
  3. 還支持高性能地理和數字查詢的優化數據結構中索引非文本數據。
  4. DSL查詢語言:JSON樣式的查詢語言,可以訪問所有的搜索功能

分析數據

  1. 聚合,是您能夠構建數據的複雜摘要,並深入瞭解數據的關鍵指標、模式、趨勢。由於聚合利用了用於搜索的相同數據結構,因此聚合操作也非常快。這使得您可以實時分析和可視化數據
  2. 聚合與搜索請求一起運行,您可以在單個請求中同時對相同數據搜索文檔、過濾結果、執行分析。

第二章 Elasticsearch入門

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