ES(一)簡介:基本概念
lucene和elasticsearch的前世今生
lucene,最先進、功能最強大的搜索庫,直接基于lucene開發,非常復雜,api復雜(實作一些簡單的功能,寫大量的java代碼),需要深入理解原理(各種索引結構),
elasticsearch,基于lucene,隱藏復雜性,提供簡單易用的restful api介面、java api介面(還有其他語言的api介面),
- 分布式的檔案存盤引擎
- 分布式的搜索引擎和分析引擎
- 分布式,支持PB級資料
索引:
索引,包含一堆有相似結構的檔案資料,比如可以有一個客戶索引,商品分類索引,訂單索引,索引有一個名稱,一個index包含很多document,一個index就代表了一類類似的或者相同的document,比如說建立一個product index,商品索引,里面可能就存放了所有的商品資料,所有的商品document,
創建索引
創建索引my_index_001及修改索引設定
PUT /my_index_001
{
"settings": {
"number_of_shards" : 1,
"number_of_replicas" : 0
}
}
更改副本數量:
PUT /my_index_001/_settings
{
"number_of_replicas": 2
}
檔案(document):
檔案,es中的最小資料單元,一個document可以是一條客戶資料,一條商品分類資料,一條訂單資料,通常用JSON資料結構表示,每個index下的type中,都可以去存盤多個document,一個document里面有多個field,每個field就是一個資料欄位,
映射(mapping):
ES中的索引模式叫做Mapping,索引中的每個檔案都有一個type,每個type擁有自己的模式或者模式定義,用戶可以設定一些引數,來決定如何將輸入文本分割為詞條,哪些詞條應該被過濾掉,或者哪些附加處理時有必要被呼叫的,如排序時所需的欄位內容資訊,者就是mapping扮演的角色,
與關系型資料庫對比關系如下:

近實時(NRT):
近實時,兩個意思,從寫入資料到資料可以被搜索到有一個小延遲(大概1秒);基于es執行搜索和分析可以達到秒級,
節點(node):
節點,集群中的一個節點,節點也有一個名稱(默認是隨機分配的),節點名稱很重要(在執行運維管理操作的時候),默認節點會去加入一個名稱為“elasticsearch”的集群,如果直接啟動一堆節點,那么它們會自動組成一個elasticsearch集群,當然一個節點也可以組成一個elasticsearch集群
集群(cluster):
集群是一組具有相同cluster.name的節點集合,他們協同作業,共享資料并提供故障轉移和擴展功能,當然一個節點也可以組成一個集群,
集群由唯一名稱標識,默認情況下為“elasticsearch”,此名稱很重要,因為如果節點設定為按名稱加入集群的話,則該節點只能是集群的一部分,
確保不同的環境中使用不同的集群名稱,否則最侄訓導致節點加入錯誤的集群,
集群狀態通過 綠,黃,紅 來標識:
- 綠色 - 一切都很好(集群功能齊全),
- 黃色 - 所有資料均可用,但尚未分配一些副本(集群功能齊全),
- 紅色 - 某些資料由于某種原因不可用(集群部分功能),
注意:當群集為紅色時,它將繼續提供來自可用分片的搜索請求,但您可能需要盡快修復它,因為存在未分配的分片,
分片(shard):
單臺機器無法存盤大量資料,es可以將一個索引中的資料切分為多個shard,分布在多臺服務器上存盤,有了shard就可以橫向擴展,存盤更多資料,讓搜索和分析等操作分布到多臺服務器上去執行,提升吞吐量和性能,每個shard都是一個lucene index,
設定分片的目的及原因主要是:
- 它允許您水平拆分/縮放內容量;
- 它允許您跨分片(可能在多個節點上)分布和并行化操作,從而提高性能/吞吐量;
- 分片的分布方式以及如何將其檔案聚合回搜索請求的機制完全由 Elasticsearch 管理,對用戶而言是透明的,
在可能隨時發生故障的網路/云環境中,分片非常有用,建議使用故障轉移機制,以防分片/節點以某種方式脫機或因任何原因消失,為此,Elasticsearch 允許您將索引的分片的一個或多個副本制作成所謂的副本分片或簡稱副本,
副本(replica):
任何一個服務器隨時可能故障或宕機,此時shard可能就會丟失,因此可以為每個shard創建多個replica副本,replica可以在shard故障時提供備用服務,保證資料不丟失,多個replica還可以提升搜索操作的吞吐量和性能,primary shard(建立索引時一次設定,不能修改,默認5個),replica shard(隨時修改數量,默認1個),默認每個索引10個shard,5個primary shard,5個replica shard,最小的高可用配置,是2臺服務器,
總而言之,每個索引可以拆分為多個分片,索引也可以復制為零次(表示沒有副本)或更多次,復制之后,每個索引將具有主分片(從原始分片復制而來的)和復制分片(主分片的副本),
可以在創建索引時為每個索引定義分片和副本的數量,創建索引后,您也可以隨時動態更改副本數,但這不是一項輕松的任務,所以預先計劃正確數量的分片是最佳方法,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/155202.html
標籤:其他
