想要知道ElasticSearch是如何使用的,最快的方式就是通過一個簡單的例子,第一個例子將會包括基本概念如索引、搜索、和聚合等,需求是關(guān)于公司管理員工的一些業(yè)務(wù)。
員工文檔索引
業(yè)務(wù)首先需要存儲員工數(shù)據(jù)。這將采取一個員工文檔的形式:單個文檔表示單個員工。在Elasticsearch中存儲數(shù)據(jù)的行為稱為索引,但是在索引文檔之前,我們需要決定在哪里存儲它。
在Elasticsearch中,文檔屬于某個類型,這些類型位于索引中。可以繪制一些(粗略)與傳統(tǒng)關(guān)系數(shù)據(jù)庫的對比:
Relational DB ? Databases ? Tables ? Rows ? Columns Elasticsearch ? Indices ? Types ? Documents ? Fields
Elasticsearch集群可以包含多個索引(數(shù)據(jù)庫),這些索引又包含多個類型(表)。這些類型包含多個文檔(行),每個文檔都有多個字段(列)。
您可能已經(jīng)注意到,在Elasticsearch的上下文中,索引被重載了幾個含義。如下:
索引(名詞):正如前面所解釋的那樣,索引就像傳統(tǒng)的關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)庫一樣。它是存儲相關(guān)文檔的地方。index的復(fù)數(shù)形式是indices或indexes。
索引(動詞):索引一個文檔是將一個文檔存儲在索引(名詞)中,以便它可以檢索和查詢。它很像插入關(guān)鍵詞SQL。此外,如果文檔已經(jīng)存在,新的文檔將取代舊的。
倒排索引:關(guān)系數(shù)據(jù)庫中增加一個索引,如B-樹索引,對特定列為了提高數(shù)據(jù)檢索的速度。Elasticsearch和Lucene提供相同目的的索引稱為倒排索引。
默認(rèn)情況下,文檔中的每個字段索引(有一個倒排索引)這樣的搜索。一個沒有倒排索引字段不可搜索。