elasticsearch學習筆記一:核心概念

aliyeye發表於2020-12-13

1. NRT(Near Realtime):近實時

兩方面:

  • 寫入資料時,過一秒才會被搜尋到,因為內部在分詞,錄入索引。(倒排索引)
  • es搜尋時:搜尋和分析資料需要秒級出結果。

2.Cluster:叢集

包含一個或多個啟動著es例項的機器群。通常一臺機器起一個es例項。同一網路下,集名一樣的多個es例項自動組成叢集,自動均衡分片等行為。預設叢集名為“elasticsearch”

3.Node:節點

每一個es例項稱為一個節點。節點名自動分配,也可以手動分配。

4.Document:文件

es中的最小資料單位。一個document就像資料庫中的一條記錄。通常以json格式顯示。多個document儲存於一個索引(Index)中。

book document
{
    "book_id":"1",
    "book_name":"java程式設計思想",
    "book_desc":"java的基礎從0到精通,從入門到放棄.......",
    "category_id":"1",
    "category_name":"java"
}

5.Index:索引

包含一堆有相似結構的文件規則。(把它理解成資料庫中的表就可以了)
索引建立規則:

  • 僅限小寫字母
  • 不能包含\ / ? “ < > | #以及空格等特殊符號
  • 從7.0版本開始就不再包含冒號
  • 不能以- _或+開頭
  • 不能超過255個位元組(注意它是位元組,因此多個位元組符將計入255個限制)

6.Field:欄位

就像資料庫中的列(Columns),定義每個document應該有的欄位。

7.Type:型別

每個索引裡都可以有一個或多個type,type是index中的一個邏輯資料分類,一個type下的document,都有相同的field。
注意:6.0之前的版本有type(型別)概念,type相當於關係xing資料庫中的表,ES官方將在ES9.0版本中徹底刪除type。此學習文件type都為_doc。

8.shard:分片

index資料過大時,將index裡的資料,分為多個shard,分散式儲存在各個伺服器上面。可以支援海量資料和高併發,提高效能和吞吐量,充分利用多臺機器的cpu。

9.replica:副本

在分散式環境下,任何一臺機器都有會有隨時當機的可能,如果當機,index的一個分片沒有,導致此index不能搜尋。所以為了確保資料的安全,我們會將每個index的分片進行備份,儲存在另外的機器上,保證少數機器當機後es叢集仍可以搜尋。
能正常提供查詢和插入的分片我們叫做主分片(primary shard),其餘的我們管它叫做備份分片(replica shard)。
es6預設新建索引時,5個分片,1副本,也就是一主一備,共10個分片。所以es叢集最小規模為兩臺。es7 1分片1副本,一共2分片。

核心概念:elasticsearch和資料庫對比

關係型資料庫(比如MYSQL) 非關係型資料庫(elasticsearch)
資料庫Databas 索引Index
表Table 索引Index(原為Type)
資料行Row 文件Document
資料列Column 欄位Field
約束Schema 對映Mapping
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章