Elasticsearch--基礎知識(術語、概念)

索引詞(term)

在Elasticsearch中索引詞(term)是一個能夠被索引的精確值。foo、Foo、FOO幾個單詞是不同的索引詞。索引詞是可以通過term查詢進行準確的搜索。

文本(text)

文本是一段普通的非結構化文字。通常,文本會被分析成一個個的索引詞,存儲在Elasticsearch的索引庫中。爲了讓文本能夠進行搜索,文本字段需要事先進行分析;當對文本中的關鍵詞進行查詢的時候,搜索引擎應該根據搜索條件搜索出原文本。

分析(analysis)

分析是將文本轉換爲索引詞的過程,分析的結果依賴於分詞器。比如:FOO、BAR、Foo-Bar和foo bar這幾個單詞有可能會被拆分成相同的索引詞foo和bar,這些索引詞存儲在Elasticsearch的索引庫中。當用FoO:bAR進行全文搜索的時候,搜索引擎根據匹配計算也能在索引庫中搜索出之前的內容。

集羣(cluster)

集羣由一個或多個節點組成,對外提供服務,對外提供索引和搜索功能。在所有節點,一個集羣有一個唯一的名稱默認爲『Elasticsearch』。此名稱是很重要的,因爲每個節點只能是集羣的一部分,當該節點被設置爲相同的集羣名稱時,就會自動加入集羣。當需要有多個集羣的時候,要確保每個集羣的名稱不能重複,否則,姐弟啊可能會假如錯誤的集羣。

請注意:一個節點只能假如一個集羣,此外,你還可以擁有多個獨立的集羣,每個集羣都有其不同的集羣名稱。

例如,在開發過程中,可以建立開發集羣庫和此時集羣庫,分別爲開發、測試服務。

Elasticsearch集羣結構如下圖:
在這裏插入圖片描述

節點(node)

一個節點是一個邏輯上獨立的服務,它是集羣的一部分,可以存儲數據,並參與集羣的索引和搜索功能。

節點也有唯一的名字,在啓動的時候分配。如果你不想要默認名稱,你可以定義任何你想要的節點名。這個名字在管理中很重要,在網絡中Elasticsearch集羣通過節點名稱進行管理和通信。

一個節點可以被配置假如一個特定的集羣。默認情況下,每個節點會加入名爲Elasticsearch的集羣中,這意味着如果你在網絡上啓動多個節點,如果網絡通常,他們能彼此發現並自動假如一個名爲Elasticsearch的集羣中,你可以擁有多個你想要的節點。當網絡沒有集羣運行的時候,只要啓動任何一個節點,這個節點會默認生成一個新的集羣,這個集羣會有一個節點。

路由(routing)

當存儲一個文檔的時候,它會存儲在唯一的主分片中,具體哪個分片是通過散列值進行選擇。默認情況下,這個值是由文檔的ID生成。如果文檔有一個指定的父文檔,則從父文檔ID中生成,該值可以在存儲文檔的時候進行修改。

分片(shard)

分片是單個Lucene實例,這是Elasticsearch管理的比較底層的功能。所以是指向主分片和副本分片的邏輯空間。對於使用,只需要指定分片的數量,其它不需要做過多的事情。在開發使用的過程中,我們對應的對象都是索引,Elasticsearch會自動管理集羣中的所有分片,當發生故障的時候,Elasticsearch會把分片移動到不同的節點或者添加新的節點。

一個索可以存儲很大的數據,這些空間可以超過一個節點的物理存儲的限制。例如,十億個文檔佔用磁盤空間爲1TB。僅從單個節點搜索可能會很慢,還有一臺物理機器也不一定能存儲這麼多的數據。爲了解決這一問題,Elasticsearch將索引分解成多個分片。當你創建一個索引,你可以簡單地定義你想要的分片數量。每個分片本身是一個全功能的、獨立的打暖,可以託管在集羣中的任何節點。

主分片(primary shard)

每個文檔都存儲在一個分片中,當你存儲一個文檔的時候,系統會首先存儲在主分片中,然後會複製到不同的副本中。默認情況下,一個索引有5個主分片。你可以事先定製分片的數量,當分片一旦建立,則分片的數量不能修改。

副本分片(replica shard)

每個分片有零個或多個副本。副本主要是主分片的複製,其中有兩個目的:

  1. 增加高可用性: 當主分片失敗的時候,可以從副本分片中選擇一個作爲主分片。
  2. 提高性能: 當查詢的時候可以到主分片或者副本分片中進行查詢。默認情況下,一個主分片配有一個副本,但副本的數量可以在後面動態地配置增加。副本分片必須部署在不同的節點上,不能部署在和主分片相同的節點上。

分片主要有兩個很重要的原因是:

  • 允許水平分割擴展數據
  • 允許分配和並行操作(可能在多個節點上)從而提高性能和吞吐量

複製(replica)

複製是一個非常有用的功能,不然會有單點問題。當網絡中的某個節點出現問題的時候,複製可以對故障進行轉移,保證系統的高可用。因此,Elasticsearch 允許你創建一個或多個拷貝,你的索引分片就形成了所謂的副本或副本分片。
複製是重要的,主要的原因有:

  • 它提供了高可用性,當節點失敗的時候不受影響。需要注意的是,一個複製的分片不會存儲在同一個節點中。
  • 它允許你擴i展搜索量,提高併發量,因爲搜索可以在所有副本上並行執行。

每個索引可以拆分成多個分片。索引可以複製零個或者多個分片。一旦複製,每個索引就有了主分片和副本分片。分片的數量和副本的數量可以在創建索引時定義。當創建索引後,你可以隨時改變副本的數量,但你不能改變分片的數量。

默認情況下,每個索引分配5個分片和一個副本,這意味着你的集羣節點至少要有兩個節點,你將擁有5個主要的分片和5個副本分片共計10個分片。

索引(index)

索引是具有相同結構的文檔集合。例如,可以有8個客戶信息的索引,包括一個產品目錄的索引,一個訂單數據的索引。在系統上索引的名字全部小寫,通過這個名字可以用來執行索引、搜索、更新和刪除等操作。在單個集羣中,可以定義多個你想要的索引。索引結構如下圖:
在這裏插入圖片描述

類型(type)

在索引中,可以定義一個或多個類型,類型是索引的邏輯分區。在一般情況下,一種類型被定義爲具有一組公共字段的文檔。例如,讓我們假設你運行一個博客平臺,並把所有的數據存儲在一個索引中。在這個索引中,你可以定義一種類型爲用戶數據,一種類型爲博客數據,另一種類型爲評論數據。

文檔(document)

文檔是存儲在Elasticsearch中的一個JSON格式的字符串。它就像在關係數據庫中表的一行。每個存儲在索引中的一個文檔都有一個類型和一個ID,每個文檔都是一個JSON對象,存儲了零個或者多個字段,或者鍵值對,原始的JSON文檔被存儲在一個叫做 _source 的字段中。當搜索文檔的時候默認返回的就是這個字段。

映射(mapping)

映射像關係數據庫中的表結構,每一個索引都有一個映射,它定義了索引中的每一個字段類型,以及一個索引範圍內的設置。一個映射可以事先被定義,或者在第一次存儲文檔的時候自動識別。

字段(field)

文檔中包含零個或多個字段,字段可以是一個簡單的值(例如字符串、整數、日期),也可以是一個數組或對象的嵌套結構。字段類似於關係數據庫中表的列。每個字段都對應一個字段類型,例如正數、字符串、對象等。字段還可以指定如何分析該字段的值。

來源字段(source field)

默認情況下,你的原文檔將被存儲在 _source 這個字段中,當你查詢的時候也是返回這個字段。這允許你可以從搜索結果中訪問原始的對象,這個對象返回一個精確的JSON字符串,這個對象不顯示索引分析後的其它任何數據。

主鍵(ID)

ID是一個文件的唯一標識,如果在庫存的時候沒有提供ID,系統會自動生成一個ID,文檔的index/type/id必須是唯一的。

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