天天看點

ElasticSerach學習(一)-基本概念

1.安裝

參考CSDN es官方部落格

https://elasticstack.blog.csdn.net/article/details/99413578

官網下載下傳,啟動即可

測試安裝:

postman測試:

http://192.168.164.132:9200/

傳回如下圖所示,安裝成功

ElasticSerach學習(一)-基本概念

2.概念

2.1 Cluster

叢集,有一個或多個節點組成,預設情況下啟動的es有一個cluster的叢集,參照Es的配置檔案elasticsearch.yml如下如所示:

ElasticSerach學習(一)-基本概念

PostMan查詢叢集狀态

Get

http://192.168.164.132:9200/_cluster/state

傳回叢集的資訊

ElasticSerach學習(一)-基本概念

2.2 node

執行個體,一個node就是一個es的執行個體,多個node組成了es的叢集,正常情況下,一個執行個體部署在一個單獨的伺服器上,學習中使用同一台伺服器,或者多個虛拟機

node的分類

node類型 功能描述 參數(elasticsearch.yml中的配置項)
master-eligible 主node,可以對叢集進行管理,增删node/index,分片 node.master
data 資料節點 node.data
ingest 資料接入節點 node.ingest
machine learning 機器學習 node.ml

7.9版本後使用node.roles指定node類型

https://elasticstack.blog.csdn.net/article/details/110947372

一個node可以同時具有上述的多個類型,即一個node既可以是主node,也可以作為data node存儲資料,預設情況下,一個node是同時具有上述多個功能的

ElasticSerach學習(一)-基本概念

針對master節點,由于是管理叢集節點,可以通過設定參數cluster.remote.connect:false來拒絕遠端連接配接

針對master節點,如果有多個節點的node.master為true的情況下,需要從這些節點中選取一個作為master節點,可以通過node.voting_only參數設定此節點隻參與選舉,自身不會被選舉.

postman檢視node

http://192.168.164.132:9200/_cluster/state?filter_path=metadata.cluster_coordination.last_committed_config

傳回結果:

ElasticSerach學習(一)-基本概念

2.3 Document

文檔,是es中存儲的最小資料單元,對比關系型資料庫,文檔與資料庫表中的記錄對應.

文檔的存儲不依賴與預先定義,即不需要按照預先定義好的字段存儲,可以增減字段

文檔通常以Json的形式存儲,因為http的傳輸多以json

2.4 Type

類型,是文檔的邏輯容器,對比關系型資料庫,類型與資料庫的表是同一個概念.

類型在es 6版本之後,開始削弱,目前一個index隻能由一個type,預設情況下是_doc

es8之後計劃移除type

2.5 Index

索引,是文檔的集合,對比關系型資料庫是庫的概念

當一個文檔進入索引的時候,需要根據hash運算得出文檔的存儲位置(哪一個分片),具體公式如下:

shard_num = hash(_routing)%分片數

_routing是文檔id,由此也可以看出,分片數并不能動态修改,修改後無法查到對應文檔的存儲位置了.

replica可以修改數目

2.6 shard

分片,将一個索引劃分為幾個不同的索引,拆分的索引就是分片

在建立索引的時候可以指定分片數,注意的是分片會存在多個node上,這也是es作為分布式部署的功能

分片可以讓es存儲遠超過一個節點磁盤容量的資料,并且可以加快搜尋速度,減輕壓力

分片分為兩種:

  1. primary shard 主分片,将一個索引分割形成的分片就是主分片
  2. replica shard 複制分片,對每一個主分片做的副本,可以在主分片故障時替換主分片

測試建立index指定分片

PUT

http://192.168.164.132:9200/user/pretty

{

    "settings":{

        "index.number_of_shards":2,

        "index.number_of_replicas":1

    }

}

指定主分片2個,副本一個

查詢index設定資訊

GET

http://192.168.164.132:9200/user/_settings?pretty
ElasticSerach學習(一)-基本概念

2.7 replica

副本,可以提高搜尋效率,保證高可用

預設情況下,es建立索引時會為索引建立一個分片,一個副本

查詢index健康資訊

http://192.168.164.132:9200/_cat/indices/user
ElasticSerach學習(一)-基本概念

傳回狀态值,yellow表示不安全,因為現在隻有一個節點,是以我們指定的分片和副本處于同一個節點上,如果整個節點挂了,此索引就不可用了

查詢分片情況

http://192.168.164.132:9200/_cat/shards?pretty
ElasticSerach學習(一)-基本概念

可以看到副本都未配置設定,因為沒有新的node加入,如果有新的node加入,會自動将副本配置設定至新node

2.8 shard 健康狀态

分為三種:

  1. red 至少一個主分片未配置設定或不可用
  2. yellow 所有主分片都已配置設定,但是至少一個副本未配置設定
  3. green 表示所有分片都已配置設定