Elasticsearch 索引例項

2021-09-08 13:30:38 字數 2066 閱讀 6074

elasticsearch包含了一系列的感念,比如索引(indexing)、搜尋(search)以及聚合(aggregations),現在我們主要介紹indexing。

在elasticsearch中,文件歸屬於一種型別(type),而這些型別存在於索引(index)中,我們可以畫一些簡單的對比圖來模擬傳統關係型資料庫:

elasticsearch集群可以包含多個索引(indices)(資料庫),每乙個索引可以包含多個型別(types)(表),每乙個型別包含多個文件(documents)(行),然後每個文件包含多個字段(fields)(列)。

索引含義的區分

你可能已經注意到索引(index)這個詞在elasticsearch中有著不同的含義,所以有必要在此做一下區分:

1、索引(名詞) 如上文所述,乙個索引(index)就像是傳統關聯式資料庫中的資料庫,它是相關文件儲存的地方,index的複數是indices 或indexes。

2、索引(動詞) 「索引乙個文件」表示把乙個文件儲存到索引(名詞)裡,以便它可以被檢索或者查詢。這很像sql中的insert關鍵字,差別是,如果文件已經存在,新的文件將覆蓋舊的文件。

3、倒排索引 傳統資料庫為特定列增加乙個索引,例如b-tree索引來加速檢索。elasticsearch和lucene使用一種叫做倒排索引(inverted index)的資料結構來達到相同目的。

假設我們剛好在megacorp工作,這時人力資源部門出於某種目的需要讓我們建立乙個員工目錄,這個目錄用於促進人文關懷和用於實時協同工作,所以它有以下不同的需求:

1、資料能夠包含多個值的標籤、數字和純文字。

2、檢索任何員工的所有資訊。

3、支援結構化搜尋,例如查詢30歲以上的員工。

4、支援簡單的全文搜尋和更複雜的短語(phrase)搜尋

5、高亮搜尋結果中的關鍵字

6、能夠利用圖表管理分析這些資料

我們首先要做的是儲存員工資料,每個文件代表乙個員工。在elasticsearch中儲存資料的行為就叫做索引(indexing),不過在索引之前,我們需要明確資料應該儲存在**。

預設情況下,文件中的所有欄位都會被索引(擁有乙個倒排索引),只有這樣他們才是可被搜尋的。

所以為了建立員工目錄,我們將進行如下操作:

1、為每個員工的文件(document)建立索引,每個文件包含了相應員工的所有資訊。

2、每個文件的型別為employee

3、employee型別歸屬於索引megacorp

4、megacorp索引儲存在elasticsearch集群中。

實際上這些都是很容易的(儘管看起來有許多步驟)。我們能通過乙個命令執行完成的操作:

我們看到path:/megacorp/employee/1包含三部分資訊:

Elasticsearch索引建議

背景 最近在做日誌收集,用到elasticsearch作為儲存層,因為日誌量比較大,一天近2t,所以每時每刻都會有大量的插入操作。又由於是給開發人員查日誌使用,所以查詢的量比較小。受限於儲存空間,目前僅保留7天的日誌,多數為乙個業務模組乙個索引,按天切分索引。關於索引和型別的取捨,建立多個索引還是乙...

elasticsearch 建立索引

介紹 分詞器 analyzer 包括乙個分解器 tokenizer 和多個詞元過濾器 filter 詞元過濾器的作是對分詞器提取的詞元進一步處理,比如轉成小寫,使用edge ngram,同義詞等,處理之後成為索引詞 term 文件正包含了幾個這樣的term成為frequency 詞頻 分解器 tok...

Elasticsearch 倒排索引

elasticsearch 使用一種稱為倒排索引的結構,它適用於快速的全文搜尋。乙個倒排索引由文件中所有不重複詞的列表構成,對於其中每個詞,有乙個包含它的文件列表。假設我們有兩個文件,每個文件的 content 域包含如下內容 the quick brown fox jumped over the ...