1. 程式人生 > >【Elasticsearch 入門篇】Elasticsearch 相關概念

【Elasticsearch 入門篇】Elasticsearch 相關概念

在這裡插入圖片描述

在 Elasticsearch 中有幾個基本的概念,如節點、索引、文件等等,下面來分別說明一下,理解了這些概念對熟悉 Elasticsearch 是非常有幫助的。

1、Node 和 Cluster

Elasticsearch 本質上是一個分散式資料庫,允許多臺伺服器協同工作,每臺伺服器可以執行多個 Elasticsearch 例項。

單個 Elasticsearch 例項稱為一個節點(Node)。一組節點構成一個叢集(Cluster)。

2、Index

Elasticsearch 會索引所有欄位,經過處理後寫入一個反向索引(Inverted Index)。查詢資料的時候,直接查詢該索引。

所以,Elasticsearch 資料管理的頂層單位就叫做 Index(索引),其實就相當於 MySQL、MongoDB 等裡面的資料庫的概念。另外值得注意的是,每個 Index (即資料庫)的名字必須是小寫。

3、Document

Index 裡面單條的記錄稱為 Document(文件)。許多條 Document 構成了一個 Index。

Document 使用 JSON 格式表示,下面是一個例子。

同一個 Index 裡面的 Document,不要求有相同的結構(scheme),但是最好保持相同,這樣有利於提高搜尋效率。

4、Type

Document 可以分組,比如 weather 這個 Index 裡面,可以按城市分組(北京和上海),也可以按氣候分組(晴天和雨天)。這種分組就叫做 Type,它是虛擬的邏輯分組,用來過濾 Document,類似 MySQL 中的資料表,MongoDB 中的 Collection。

不同的 Type 應該有相似的結構(Schema),舉例來說,id 欄位不能在這個組是字串,在另一個組是數值。這是與關係型資料庫的表的一個區別。性質完全不同的資料(比如 products 和 logs)應該存成兩個 Index,而不是一個 Index 裡面的兩個 Type(雖然可以做到)。

根據規劃,Elastic 6.x 版只允許每個 Index 包含一個 Type,7.x 版將會徹底移除 Type。

5、Fields

即欄位,每個 Document 都類似一個 JSON 結構,它包含了許多欄位,每個欄位都有其對應的值,多個欄位組成了一個 Document,其實就可以類比 MySQL 資料表中的欄位。

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

Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices   -> Types  -> Documents -> Fields

在這裡插入圖片描述