一仔沿、啰嗦幾句:
Es是目前主流的開源搜索引擎之一,ES基于Lucene實現(xiàn)尺棋,同時實現(xiàn)了一套自己的選舉調(diào)度機(jī)制封锉,使用上也更加智能化,配置簡單膘螟,Restfull接口烘浦,這都是它比較突出的特點(diǎn)。之前一直使用Solr萍鲸,對Solr的一些機(jī)制都比較熟悉闷叉,新公司主要使用es,所以也想學(xué)習(xí)一下es脊阴,同時和Solr做一些對比握侧,首先從安裝開始。
二嘿期、Es和Solr的安裝配置比較:
1 注冊選舉模塊 : Solr的選舉和注冊主要是通過Zookeeper實現(xiàn)品擎,而ES則是自己內(nèi)部實現(xiàn),相比較之下少了Zookeeper的部署和維護(hù)备徐,同時也使得ES更加輕量化萄传。
2 依賴的環(huán)境:之前一直用的Solr4版本,Solr4主要是依賴于外置web容器啟動蜜猾,像tomcat秀菱、jetty等,同時有些配置蹭睡,例如SolrHome往往需要在web.xml中配置衍菱。Solr5好像改進(jìn)了依賴,使用內(nèi)置的jetty實現(xiàn)啟動肩豁,由于對于Solr5研究太少脊串,這里就不瞎說了。但是Es沒有這種重度的依賴清钥,以一種單獨(dú)的組件形式存在琼锋,配置和維護(hù)都十分方便。
3 開源分詞器的配置:主流的開源中文分詞器主要有:IK祟昭、庖丁和ms4j等缕坎。Solr對于開源中文分詞器的配置應(yīng)該說比較繁瑣,需要對Schema里面需要的字段進(jìn)行配置从橘,這也引出了另一個問題念赶,Es的索引字段不像Solr那樣的有規(guī)范性础钠,Es的索引是無規(guī)則的,而且各個doc_type中所有的字段糅雜在索引里面叉谜,這一點(diǎn)我倒是感覺Solr做的很規(guī)范旗吁,但是Es做的很靈活。
三停局、ES的部署
通常的部署方式會是源碼編譯或者去官方下載編譯好的包很钓,附上es在github上托管的鏡像:
https://github.com/elastic/elasticsearch
我選擇的是在官方下載bin包,畢竟是玩玩董栽,要是生產(chǎn)環(huán)境最好自己編譯了码倦,另外最新的Lucene和es已經(jīng)只支持java8了,看樣子又有一批人要當(dāng)小白鼠了锭碳。
- 下載編譯好的安裝包袁稽,這里我選擇ElasticSearch1.7版本的,因為1.7還是Lucene4內(nèi)核的擒抛,不論版本推汽,能滿足場景就好,不一定最新的就是最適合的歧沪。
-
下載好之后解壓歹撒,解壓之后是這個樣子的:
Paste_Image.png
- bin目錄主要是各種啟動命令
- config主要存放配置文件
- data則是該節(jié)點(diǎn)的索引存放目錄
- lib是es依賴的一些依賴包
- logs是日志存放目錄
- plugins是es強(qiáng)大的插件系統(tǒng)
- 安裝好之后我需要對es的配置做下修改,讓他能達(dá)到集群的效果诊胞,進(jìn)入config目錄下暖夭,找到elasticsearch.yml,Vim it:
可以看到配置項很多撵孤,但是我們關(guān)注的幾個下面說明下:
- cluster.name標(biāo)明了整個集群的名字迈着,只有節(jié)點(diǎn)在相同的集群在能互相發(fā)現(xiàn)。
- node.name 是當(dāng)前節(jié)點(diǎn)名稱的標(biāo)識早直,各個節(jié)點(diǎn)的名稱不能重復(fù)
由于是單機(jī)搭建兩個節(jié)點(diǎn)的集群寥假,所以比較的端口號不能重復(fù):
- network.host 指定為本機(jī)Ip市框,這點(diǎn)很重要霞扬,否則可能導(dǎo)致外部無法訪問
- transport.tcp.port 為節(jié)點(diǎn)間通信端口,如果部署在不同機(jī)器上則默認(rèn)即可
- http.port 同樣是為了避免沖突 換成了9201
- head插件的安裝:
head是一個隊es集群進(jìn)行監(jiān)控的插件枫振,安裝很簡單喻圃,在有網(wǎng)絡(luò)的環(huán)境下,執(zhí)行:
elasticsearch/bin/plugin -install mobz/elasticsearch-head
如果下載失敗粪滤,那悲催了只能手動安裝斧拍,流程如下:
- https://github.com/mobz/elasticsearch-head下載zip 解壓
- 建立elasticsearch-1.0.0\plugins\head_site文件
- 將解壓后的elasticsearch-head-master文件夾下的文件copy到_site
- 啟動并測試使用
在兩個es節(jié)點(diǎn)的bin目錄中分別啟動肆汹,如果想用后臺啟動的方式愚墓,請使用nohup命令啟動昂勉。
啟動之后訪問http://10.0.3.67:9200/顯示如下:
同樣訪問http://10.0.3.67:9201/可以訪問另一節(jié)點(diǎn):
單從表面上看我們看不出二者有什么關(guān)系,僅僅集群名相同而已岗照,接下來我們建個索引試試,由于Es支持Restful接口攒至,我們可以用curl去訪問es:
$ curl -XPUT 'http://localhost:9200/twitter/tweet/1' -d '{ "user" : "tomcat","message" : "Hello Elasticsearch"}'
創(chuàng)建成功后我們訪問head:
http://10.0.3.67:9200/_plugin/head/
可以看到,我們成功的創(chuàng)建了一個twitter的節(jié)點(diǎn)迫吐,當(dāng)然shard默認(rèn)是5,我這里設(shè)置成了7
每一個綠色的小框框代表了一個shard志膀,外面有黑色框框的代表主shard,沒有的便是replication梧却,橫向的node對應(yīng)了集群中每一個節(jié)點(diǎn)奇颠。至此簡單的es集群就部署好了放航。