ElasticSearch核心概念

核心概念

  • Cluster,服務(wù)節(jié)點集合,集群名稱必須唯一,默認為"elasticsearch"。
  • Node, 單服務(wù)節(jié)點,通過名稱標(biāo)識,默認為UUID,節(jié)點通過集群名加入集群中。
  • Index,把一個或多個分片的分組在一起的邏輯空間,默認分為5個主分片和一個replica分片,全部小寫。
  • Type,索引的邏輯分區(qū),在Index里可定義多個Type。
  • Document,被索引的基本單元,JSON格式。
  • Shards & Replicas 分片&副本,一個分片就是一個lucene實例,實際索引數(shù)據(jù)。
  • Cluster Health: green, yellow, red, green表示集群所有功能都完正常的, yellow表示所有數(shù)據(jù)都是有效的,但是部分副本還沒分配, red表示部分數(shù)據(jù)不是有效的。
  • 提供REST API風(fēng)格請求處理方式: REST請求URI和REST請求體。
  • NRT Near Real Time, 索引文檔到文檔可被搜索到通常延時1s,故是準(zhǔn)實時,時間可調(diào)節(jié)。(默認索引refresh時間,index.refresh_interval=1s)。

CURD

Term查詢

term是代表完全匹配,也就是精確查詢,搜索前不會再對搜索詞進行分詞,所以我們的搜索詞必須是文檔分詞集合中的一個,如果搜索詞不在文檔分詞中,即便搜索詞是文檔的子串也不行。

模式Mapping

類似于數(shù)據(jù)庫中標(biāo)表的定義。es已經(jīng)不支持刪除mapping了,可以添加新的字段,但是不能修改字段。如果要重建新的mapping,只能刪除索引重新建立新的mapping。
ttl可以動態(tài)修改,但是已經(jīng)索引的數(shù)據(jù)的ttl無法修改,只會對新索引的數(shù)據(jù)有效。

Zen Discovery發(fā)現(xiàn)機制

發(fā)現(xiàn)集群中其它節(jié)點;選舉master。
master功能:維護整個集群的狀態(tài),通知其他節(jié)點;同時當(dāng)有節(jié)點加入或離開集群時,負責(zé)重新分配shard。

對選主算法有個比較好的流程分析:http://www.easyice.cn/archives/164

選舉算法 https://en.wikipedia.org/wiki/Leader_election

master的選舉算法:
默認, 一個Node既可以是master節(jié)點,也可以是data節(jié)點。

只有具備成為master節(jié)點資格的候選節(jié)點才有可能成為master, 資格的配置通過node.master=true指定。

根據(jù)nodeId排序, 由小到達, 然后選擇第一個node為master節(jié)點。

ping請求通過transport發(fā)出

es的默認發(fā)現(xiàn)機制zen,2.0以上的版本提供了unicast, 1.x的版本還提供了multicast。新版的multicast已經(jīng)廢棄了。很多服務(wù),由于其安全性,如阿里云不支持多播,及時開啟了多播,也只能找到本機上的節(jié)點。

ping和unicaset均使用transport通信模塊來與其他節(jié)點通信。

手動指定transport.tcp.port時,需要配置unicast列表(只需集群中的一臺節(jié)點配置即可,便可以相互發(fā)現(xiàn),最好全部都配置,以免改服務(wù)器宕機)。

相互ping:
當(dāng)master節(jié)點停止或者遇到問題之后集群節(jié)點會相互ping并且產(chǎn)生一個新的master節(jié)點,這種相互ping會阻止一個節(jié)點和master節(jié)點出現(xiàn)網(wǎng)絡(luò)閃斷后,就認為master停止的情況,因為它還可以從其他節(jié)點獲取master節(jié)點是否是活躍的。

故障檢測FD

es 跑了兩個默認的感知線程,一個是master用來檢測集群中的其他成員節(jié)點是否存活,另一個是其他成員節(jié)點檢測master節(jié)點的存活(如果不存活,發(fā)起一個選舉進程)。

集群狀態(tài)更新

master節(jié)點是唯一能更新集群狀態(tài)的節(jié)點,每次只處理一個狀態(tài)的更新,之后再處理在隊列中的下一個更新。它發(fā)布狀態(tài)的更改給成員節(jié)點,成員節(jié)點收到通知,不會立刻更改狀態(tài),先回復(fù)消息給master節(jié)點,master會有一個等待超時(discovery.zen.publish_timeout ),等待至少discovery.zen.minimum_master_nodes個節(jié)點答復(fù),否則拒絕更新狀態(tài)。

無master阻塞:
當(dāng)集群不能產(chǎn)生一個master的時候,discovery.zen.no_master_block 用來配置操作的策略,它有兩個配置:

  1. all (節(jié)點上的所有讀寫操作都被拒絕,這也包括了集群api狀態(tài)的讀寫操作)
  2. write(寫操作會被拒絕,讀操作能成功)

discovery.zen.no_master_block 配置的設(shè)置不影響節(jié)點基本的api,如節(jié)點信息和節(jié)點統(tǒng)計api。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、索引 Index ElaticSearch將數(shù)據(jù)存放在一個或多個索引當(dāng)中。一個索引相當(dāng)于一個數(shù)據(jù)庫,里面存放用...
    阿吖嗄閱讀 593評論 0 1
  • ES(Elasticsearch) Elasticsearch 核心概念。 接近實時(NRT) Elasticse...
    ktide閱讀 2,716評論 0 0
  • ElasticSearch是一款非常優(yōu)秀的分布式搜索程序,提供RESTful API,底層基于Lucene,采用多...
    JunChow520閱讀 518評論 0 1
  • 再一次踏入N縣高中時,心情是完全不一樣的,三年前從這里畢業(yè)后就再也沒有回來過。校門口的公告牌已經(jīng)更新?lián)Q代了。但...
    楊脈脈么閱讀 315評論 0 0
  • 不錯
    Gordon_W閱讀 146評論 0 1

友情鏈接更多精彩內(nèi)容