ElasticSearch 專業術語


  1、Analysis(分析)

 

          分析的過程就是將全文(full text)轉換成 術語/分詞(terms)。 這取決於使用那個分析器,這些短語:“FOO BAR”, “Foo-Bar”, “foo,bar”,可能會拆分成” foo”和“bar”。這些拆分后的詞實際上是存儲在索引中。

    一個完整的文本查詢(而不是一個分詞查詢) “FoO:bAR”,將被分解成 “foo”,“bar”,來匹配存儲在索引中的分詞。正是這一過程的分析(包括在索引時間和搜索時間),允許elasticsearch執行全文查詢。

 

  2、Cluster (集群)

 

    一個集群包含一個或多個分配了相同的集群名稱的節點。每個集群都有一個主節點是集群自動選擇產生,並且可以決定如果當前主節點失敗,哪些可以替換

 

  3、Document(文檔)

 

    文檔是存儲在elasticsearch中的一個JSON文件。這是相當與關系數據庫中表的一行數據。每個文檔被存儲在索引中,並具有一個類型和一個id。

    一個文檔是一個JSON對象(也被稱為在其他語言中的 hash / hashmap / associative array(關聯數組)),其中包含零個或多個字段 或者 鍵值對。

    原始JSON文檔將被存儲在索引的_source字段,在獲得(getting)或者 搜索(searching)默認的返回時,得到或搜索文檔。

 

  4、Id(標識)

 

     每個文檔ID標識了一個文檔。一個文檔的索引/類型/ ID必須是唯一的。如果沒有提供ID,將是自動生成。(還可以看到路由<routing>)

 

  5、Field(字段)

 

    文檔中包含的一組字段或鍵值對。字段的值可以是一個簡單的(標量)值(如字符串,整數,日期),或者一個嵌套的結構就像一個數組或對象。一個字段就是類似關系數據庫表中的一列。

    映射的每個字段有一個字段的類型“type”(不要與文檔類型混淆),表示那種類型的數據可以存儲在該字段里,如:整數<integer>,字符串<string>,對象<object>。

    映射還允許你定義(除其他事項外)一個字段的值如何進行分析。

 

  6、Index(索引)

 

    索引就是像關系數據庫中的“數據庫”。通過映射可以定義成多種類型。索引是一個邏輯命名空間映射到一個或多個主要的分片,可以有零個或多個副本分片

 

  7、Mapping(映射)

 

    映射是像關系數據庫中的”模式定義“。每個索引都有一個映射,它定義了每個索引的類型,再加上一些索引范圍的設置。映射可以被明確地定義,或者在一個文檔被索引的時候自動生成。

 

  8、Node(節點)

 

     節點是屬於elasticsearch群集的運行實例。測試的時候,在一台服務器可以啟動多個節點,但通常情況下應該在一台服務器運行一個節點。在啟動時,

    節點將使用單播(或組播,但是必須指定)來發現使用相同的群集名稱的群集,並會嘗試加入該群集。

 

  9、Primary shard(主分片)

 

    每個文檔都存儲在一個主要分片上。當你索引一個文檔時,索引首先生成在主分片上,然后才到主分片的所有副本上。默認情況下,索引有5個主分片。     

    可以指定更多或更少的主分片來適應索引可以處理的文檔數。一旦創建了索引,就不能改變索引中主分片的數量。

 

  10、Replica shard(副本分片)

 

    每個主分片可以有零個或多個副本。副本是主分片的一個拷貝,有兩個作用:

    1、故障轉移:如果主分片有問題,副本分片可以提升為主分片;

    2、提高性能:獲取和搜索請求可以處理主分片或副本分片。

    默認情況下,每個主分片有一個副本,不過索引的副本數量可以動態地改變。在同一個節點上,一個副本分片將永遠不會和其主分片一起運行。

 

  11、Routing(路由)

 

    當你索引一個文檔,它是存儲在一個主分片里。這分片的選擇是通過哈希的路由值。默認情況下,路由值來自文檔的ID;如果該文檔指定了父文檔,

    則使用父文檔的ID(以確保這個子文檔和父文件都存儲在相同的分片上)。這個路由值可以在索引的時候,通過指定數值或者配置字段映射來覆蓋。

 

   12、Shard(分片)

 

    一個分片是一個單一的Lucene的實例。這是一個低級別的通過ElasticSearch自動管理的“工作者”單元。索引是一個邏輯命名空間指向主分片和副本分片。

    索引的主分片和副本分片的數量需要明確的指定。然而你的代碼應該只處理一個索引。Elasticsearch分配集群中所有節點的分片。在節點出現故障或增加新節點的時候,

    可以自動的將一個節點上的分片移動到另一個節點上。

 

  13、Source field(源字段)

 

    默認情況下,你的JSON文檔將被索引存儲在_source字段里面,所有的get(獲取)和search(搜索)請求將返回的該字段。這將允許你直接從搜索結果中訪問到源數據,而不需要再次發起請求檢索。

    注:索引將返回完整的的JSON字符串給你,即使它包含無效的JSON。此字段里的內容不表示任何該對象里面的數據如何被索引。

 

  14、Term(術語)

 

    在elasticsearch里,術語(term)是一個被索引的精確值。術語 foo, Foo,FOO 是不想等的。術語(即精確值)可以使用“term”查詢接口來查詢。

 

  15、Text(文本)

 

    文本(或全文)是普通非結構化的文本,如本段。默認情況下,文本將被分析成術語,術語才是實際存儲在索引中。文本字段在索引時需要進行分析,

    以便全文搜索,全文查詢的關鍵字在搜索時,必須分析產生(搜索)與索引時相同的術語。

 

  16、Type(類型)

 

    Type是相當於關系數據庫中的“表”。每種類型都有一列字段,用來定義文檔的類型。映射定義了對在文檔中的每個字段如何進行分析。

    搜索數據結構如下:

    

 

  總結

    1、Cluster包含多個node,Indices不應該理解成動詞索引,Indices可理解成關系數據庫中的databases,Indices可包含多個Index,Index對應關系數據庫中的database,它是用來存儲相關文檔的。

      document的可以理解為一個JSON序列對象。每個document可包含多個field。

      Elasticsearch與關系數據的類比對應關系如下:

      

 

           2、每個Index(對應Database)包含多個Shard,默認是5個,分散在不同的Node上,但不會存在兩個相同的Shard存在一個Node上,這樣就沒有備份的意義了。Shard是一個最小的Lucene索引單元。

              當來一個document的時候,Elasticsearch通過對docid進行hash來確定其放在哪個shard上面,然后在shard上面進行索引存儲。

        Replicas就是備份,Elasticsearch采用的是PushReplication模式,當你往 master主分片上面索引一個文檔,該分片會復制該文檔(document)到剩下的所有 replica副本分片中,這些分片也會索引這個文檔。

          3、當進行查詢時,如果提供了查詢的DocID,Elasticsearch通過hash就知道Doc存在哪個shard上面,再通過routingtable查詢就知道再哪個node上面,讓后去node上面去取就好了。

       如果不提供DocID,那么Elasticsearch會在該Index(indics)shards所在的所有node上執行搜索預警,然后返回搜索結果,由coordinating node gather之后返回給用戶。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM