1. 程式人生 > >Elasticsearch中的一些基本概念

Elasticsearch中的一些基本概念

索引詞(term)
在Elasticsearch中索引詞(term)是一個能夠被索引的精確值。foo,Foo Foo幾個單詞是不相同的索引詞。索引詞(term)是可以通過term查詢進行準確的搜尋。
文字(text)
文字是一段普通的非結構化文字,通常,文字會被分析稱一個個的索引詞,儲存在Elasticsearch的索引庫中,為了讓文字能夠進行搜尋,文字欄位需要事先進行分析;當對文字中的關鍵詞進行查詢的時候,搜尋引擎應該根據搜尋條件搜尋出原文字。
分析(analysis)
分析是將文字轉換為索引詞的過程,分析的結果依賴於分詞器,比如: FOO BAR, Foo-Bar, foo bar這幾個單詞有可能會被分析成相同的索引詞foo和bar,這些索引詞儲存在Elasticsearch的索引庫中。當用 FoO:bAR進行全文搜尋的時候,搜尋引擎根據匹配計算也能在索引庫中搜索出之前的內容。這就是Elasticsearch的搜尋分析。在這裡插入圖片描述


叢集(cluster)
一個叢集由一個或多個共享相同的群集名稱的節點組成。每個群集有一個單獨的主節點,這是由程式自動選擇,如果當前主節點失敗,程式會自動選擇其他節點作為主節點。
節點(node)
一個節點屬於一個叢集。通常情況下一個伺服器有一個節點,但有時候為了測試方便,一臺伺服器也可以有多個節點。在啟動時,一個節點將使用廣播來發現具有相同群集名稱的現有群集,並將嘗試加入該群集。
路由(routing)
當儲存一個文件的時候,他會儲存在一個唯一的主分片中,具體哪個分片是通過雜湊值的進行選擇。預設情況下,這個值是由文件的id生成。如果文件有一個指定的父文件,從父文件ID中生成,該值可以在儲存文件的時候進行修改。
分片(shard)
分片是一個單一的Lucene例項。這個是由Elasticsearch管理的比較底層的功能。索引是指向主分片和副本分片的邏輯空間。對於使用,只需要指定分片的數量,其他不需要做過多的事情。在開發使用的過程中,我們對應的物件都是索引,Elasticsearch會自動管理叢集中所有的分片,當發生故障的時候,一個Elasticsearch會把分片移動到不同的節點或者新增新的節點。
主分片(primary shard)
每個文件都儲存在一個分片中,當你儲存一個文件的時候,系統會首先儲存在主分片中,然後會複製到不同的副本中。預設情況下,一個索引有5個主分片。你可以在事先制定分片的數量,當分片一旦建立,分片的數量則不能修改。
副本分片(replica shard)
每一個分片有零個或多個副本。副本主要是主分片的複製,其中有兩個目的:
1、增加高可用性:當主分片失敗的時候,可以從副本分片中選擇一個作為主分片。
2、提高效能:當查詢的時候可以到主分片或者副本分片中進行查詢。預設情況下,一個主分配有一個副本,但副本的數量可以在後面動態的配置增加。副本必須部署在不同的節點上,不能部署在和主分片相同的節點上。
在這裡插入圖片描述

索引(index)
索引就像關係資料庫中的資料庫,每個索引有不同欄位,可以對應不同的型別;每個索引都可以有一個或者多個主索引片,同時每個索引還可以有零個或者多個副本索引片。
型別(type)
型別類似關係資料庫中的表。每種型別都可以指定不同的列。對映定義文件中的每個欄位的型別,並可以指定如何分析。
文件(document)
一個文件是一個JSON格式的字串儲存在Elasticsearch中。它就像在關係資料庫中的表中的一行。每個儲存在索引中的一個檔案都有一個型別和一個id,每個檔案都是一個json物件,儲存了零個或者多個欄位,或者鍵值對。原始的json文件被儲存在一個叫做_source的欄位中。當搜尋文件的時候預設返回的就是這個欄位。
對映(mapping)
對映像關係資料庫中的表結構,每一個索引都有一個對映,它定義了索引中的每一個欄位型別,以及一個索引範圍內的設定。一個對映可以事先被定義,或者在第一次儲存文件的時候自動識別。
欄位(field)
一個文件中包含零個或者多個欄位,欄位可以是一個簡單的值(例如字串、整數、日期),也可以是一個數組或物件的巢狀結構。欄位類似於關係資料庫中的表中的列。每個欄位都對應一個欄位型別,例如整數、字串、物件等。欄位還可以指定如何分析該欄位的值。
來源欄位(source field)
預設情況下,你的原文件將被儲存在_source這個欄位中,當你查詢的時候也是返回這個欄位。這允許您可以從搜尋結果中訪問原始的物件,這個物件返回一個精確的json字串,這個物件不顯示索引分析後的其他任何資料。
主鍵(id)
id是一個檔案的唯一標識,如果在存庫的時候沒有提供id,系統會自動生成一個id,文件的index/type/id必須是唯一的。