Elasticsearch是什么
Elasticsearch 是一個(gè)用java語言編寫的分布式開源搜索引擎,內(nèi)部集成了全文搜索引擎框架Apache Lucene,隱藏了Apache Lucene的復(fù)雜性,通過提供簡(jiǎn)單易用的RESTful API,從而實(shí)現(xiàn)對(duì)用戶的開箱即用。
Elasticsearch適用場(chǎng)景
Elasticsearch 主要功能就是為了實(shí)時(shí)搜索,當(dāng)前互聯(lián)網(wǎng)、電商、企業(yè)門戶等場(chǎng)景都有搜索的場(chǎng)景,如電商網(wǎng)站的商品搜索、媒體網(wǎng)站的博客文章搜索、企業(yè)日志分析等業(yè)務(wù)。Elasticsearch已成為當(dāng)下最為流行的搜索框架,熱度已遠(yuǎn)超Solr。
在國內(nèi)各互聯(lián)網(wǎng)電商巨頭已普遍采用Elasticsearch做為搜索基礎(chǔ)架構(gòu)框架,在國外亦是如此,如IT屆比較知名的Stack Overflow(討論程序異常的論壇)、GitHub(全球知名代碼托管平臺(tái),搜索幾千億行代碼)。在數(shù)據(jù)分析方向Elasticsearch一樣出重, 通過提供強(qiáng)大的聚合分析,可以對(duì)海量數(shù)據(jù)進(jìn)行實(shí)時(shí)處理。
Elasticsearch 集群架構(gòu)詳解
一個(gè)Elasticsearch Cluster 由若干node組成,其中node可分為:master node、data node、Coordinating node,如下圖所示:

上圖集群由一個(gè)master節(jié)點(diǎn)和2個(gè)data節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)上又分別分配了一個(gè)主分片和一個(gè)副本,主分片與副本不能放在同一個(gè)node,否則node出故障丟失數(shù)據(jù)時(shí)無法從副本恢復(fù)。
Master node: 負(fù)責(zé)集群中的元數(shù)據(jù)管理,索引的創(chuàng)建、刪除、分片分配等,不負(fù)責(zé)檢索與聚合。
Data node:數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),主要保存分片數(shù)據(jù),如分片的CRUD、搜索、聚合。所以數(shù)據(jù)節(jié)點(diǎn)的負(fù)載一般較高,比較消耗CPU、IO、內(nèi)存等,建議采用高配置的硬件。
Elasticsearch 集群安全
經(jīng)常碰到某某公司由于Elasticsearch 集群安全配置不當(dāng)導(dǎo)致數(shù)據(jù)丟失,給公司帶來不可估量的損失,甚至導(dǎo)致公司倒閉破產(chǎn),數(shù)據(jù)安全永遠(yuǎn)是使用Elasticsearch的第一考慮因素。以下列舉了必要的措施以防止數(shù)據(jù)泄露。Elasticsearch 的安全主要通過X-pack來實(shí)現(xiàn),
6.3版本及之后:已經(jīng)集成在一起發(fā)布,無需額外安裝,基礎(chǔ)安全屬于付費(fèi)黃金版內(nèi)容。
7 .1版本:基礎(chǔ)安全免費(fèi),建議線上環(huán)境使用7.1及以上版本
- 不要將Elasticsearch暴露到公網(wǎng),限制公共端口
1.1 限制9200端口:iptables -A INPUT -i eth0 -p tcp --destination-port 9200 -s {PUBLIC-IP-ADDRESS-HERE} -j DROP
1.2 限制9300——集群內(nèi)部通信端口
iptables -A INPUT -i eth0 -p tcp --destination-port 9300 -s {PUBLIC-IP-ADDRESS-HERE} -j DROP
1.3 限制5601——kibana訪問端口
iptables -A INPUT -i eth0 -p tcp --destination-port 5601 -s {PUBLIC-IP-ADDRESS-HERE} -j DROP
禁止批量刪除,防止開發(fā)人員有意或者無意刪除數(shù)據(jù)
定期備份數(shù)據(jù)
使用7.1及以上版本,X-PACK免費(fèi)使用
Elasticsearch 版本選擇
官方推薦當(dāng)前最新版本往前推3-4個(gè)月對(duì)應(yīng)的版本,不建議現(xiàn)網(wǎng)直接用最新版本,也不建議用太舊的版本,畢竟每次版本升級(jí)對(duì)性能、功能都是有所提升的,用太舊版本無法獲得技術(shù)升級(jí)帶來的紅利。
Elasticsearch 內(nèi)存配置
設(shè)置內(nèi)存為機(jī)器內(nèi)存的一半,但不要超過32G,否則會(huì)JVM會(huì)禁用內(nèi)存指針壓縮,導(dǎo)致內(nèi)存浪費(fèi);內(nèi)存最低配置也不能低于2G,否則會(huì)導(dǎo)致內(nèi)存溢出。
Elasticsearch 核心功能
包括:索引、檢索、聚合、分詞、集群部署安全、備份與恢復(fù)等,后面會(huì)出文章一 一介紹主要核心功能。