作者:羅海鵬谒出,叩丁狼教育高級(jí)講師。原創(chuàng)文章沈自,轉(zhuǎn)載請(qǐng)注明出處酌儒。
安裝使用
? ? ? ?elasticsearch是支持Linux和window系統(tǒng)的,而我當(dāng)前的系統(tǒng)是Linux枯途,發(fā)行版為centos7忌怎,我們就在centos7下做elasticsearch的安裝和測試,并且后續(xù)的環(huán)境都是在centos7下學(xué)習(xí)酪夷,所以這里默認(rèn)大家對(duì)Linux有一定的了解榴啸,并且熟悉常用的命令,如果大家對(duì)Linux不了解的話晚岭,歡迎來到叩丁狼學(xué)習(xí)鸥印,或者關(guān)注我們的技術(shù)文章和公開視頻。
安裝步驟:
1、下載elasticsearch:
elasticsearch官網(wǎng)上最新的穩(wěn)定版本是6,2,4库说,該版本不支持jdk8以下的狂鞋,所以我們?cè)诋?dāng)前的centos7系統(tǒng)下安裝好jdk8
elasticsearch下載地址:http://www.elastic.co/downloads/elasticsearch
我們選擇下載的是tar包。包的全名為:elasticsearch-6.2.4.tar.gz
2璃弄、安裝elasticsearch
把elasticsearch-6.2.4.tar.gz上傳到/usr/local目錄下并執(zhí)行解壓命令:
$ tar -zxvf elasticsearch-6.2.4.tar.gz
為了方便后續(xù)的操作要销,我們把 elasticsearch-6.2.4改個(gè)名字
$ mv elasticsearch-6.2.4 elasticsearch
3构回、運(yùn)行elasticsearch
從5.0開始夏块,ElasticSearch 安全級(jí)別提高了,不允許采用root帳號(hào)啟動(dòng)纤掸,所以我們要添加一個(gè)用戶脐供。
創(chuàng)建用戶組:
$ groupadd es
創(chuàng)建用戶,-e代表把es用戶分配到es用戶組中借跪,-p代表給es用戶設(shè)置密碼為123456:
$ useradd es -g es -p 123456
修改權(quán)限政己,更改elasticsearch文件夾以及內(nèi)部文件的所屬用戶以及組為es,-R表示逐級(jí)(N層目錄)
$ chown -R es:es /usr/local/elasticsearch
切換為es用戶登錄
$ su es
進(jìn)入到elasticsearch安裝目錄的bin目錄下
$ cd /usr/local/elasticsearch/bin
執(zhí)行運(yùn)行操作掏愁,-d表示后臺(tái)運(yùn)行
$ ./elasticsearch -d
查看是否運(yùn)行成功:
$ curl http://localhost:9200
如果打印以下信息歇由,則代表elasticsearch運(yùn)行成功
{
"name" : "p2gU_GO",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "DoHcTzHrSEqNIQVltUG2XA",
"version" : {
"number" : "6.2.4",
"build_hash" : "ccec39f",
"build_date" : "2018-04-12T20:37:28.497551Z",
"build_snapshot" : false,
"lucene_version" : "7.2.1",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
? ? ? ?至此,我們就把elasticsearch安裝到我們主機(jī)上了果港,但是我們現(xiàn)在是在本機(jī)上訪問elasticsearch服務(wù):localhost:9200沦泌,那如果想要外部的主機(jī)訪問呢?比如我們當(dāng)前運(yùn)行這個(gè)elasticsearch服務(wù)的主機(jī)IP是192.168.85.131辛掠,然后我用192.168.85.1這臺(tái)主機(jī)去訪問192.168.85.131:9200谢谦,那是訪問不了的,原因是elasticsearch本身的安全機(jī)制和系統(tǒng)防火墻等因素限制萝衩。那實(shí)際上回挽,我們的elasticsearch服務(wù)肯定是要給外部主機(jī)訪問的,那該怎么做呢猩谊?接下來我們就來學(xué)學(xué)elasticsearch的配置千劈。
基礎(chǔ)配置
? ? ? ?elasticsearch的主配置文件在config/elasticsearch.yml中,該配置文件包含集群牌捷、節(jié)點(diǎn)队塘、網(wǎng)絡(luò)和數(shù)據(jù)存儲(chǔ)等等的重要配置。接下來我們來看看該配置文件中的一些基礎(chǔ)的配置屬性是代表什么意思宜鸯,更多的配置我們后續(xù)講到相關(guān)的內(nèi)容再詳細(xì)介紹憔古。
################################### 集群相關(guān)配置 ###################################
# cluster.name可以確定你的集群名稱,當(dāng)你的elasticsearch集群在同一個(gè)網(wǎng)段中elasticsearch會(huì)自動(dòng)的找到具有相同cluster.name的elasticsearch服務(wù).
# 所以當(dāng)同一個(gè)網(wǎng)段具有多個(gè)elasticsearch集群時(shí)cluster.name就成為同一個(gè)集群的標(biāo)識(shí).,可以手動(dòng)指定也可以自動(dòng)生成
# cluster.name: elasticsearch
#################################### 節(jié)點(diǎn)相關(guān)配置 #####################################
# 節(jié)點(diǎn)名稱同理,可自動(dòng)生成也可手動(dòng)配置.
# node.name: node-1
# 允許一個(gè)節(jié)點(diǎn)是否可以成為一個(gè)master節(jié)點(diǎn),es是默認(rèn)集群中的第一臺(tái)機(jī)器為master,如果這臺(tái)機(jī)器停止就會(huì)重新選舉master.
# node.master: true
# 允許該節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)(默認(rèn)開啟)
# node.data: true
# 默認(rèn)情況下淋袖,多個(gè)節(jié)點(diǎn)可以在同一個(gè)安裝路徑啟動(dòng)鸿市,如果你想讓你的es只啟動(dòng)一個(gè)節(jié)點(diǎn),可以進(jìn)行如下設(shè)置
# node.max_local_storage_nodes: 1
#################################### 索引相關(guān)配置 ####################################
# 設(shè)置索引的分片數(shù),默認(rèn)為5
#index.number_of_shards: 5
# 設(shè)置索引的副本數(shù),默認(rèn)為1:
#index.number_of_replicas: 1
# 配置文件中提到的最佳實(shí)踐是,如果服務(wù)器夠多,可以將分片提高,盡量將數(shù)據(jù)平均分布到大集群中去
# 同時(shí),如果增加副本數(shù)量可以有效的提高搜索性能
# 需要注意的是,"number_of_shards" 是索引創(chuàng)建后一次生成的,后續(xù)不可更改設(shè)置
# "number_of_replicas" 是可以通過API去實(shí)時(shí)修改設(shè)置的
#################################### 路徑相關(guān)配置 ####################################
# 配置文件存儲(chǔ)位置
# path.conf: /path/to/config
# 數(shù)據(jù)存儲(chǔ)位置(單個(gè)目錄設(shè)置)
# path.data: /path/to/data
# 多個(gè)數(shù)據(jù)存儲(chǔ)位置,有利于性能提升
# path.data: /path/to/data1,/path/to/data2
# 臨時(shí)文件的路徑
# path.work: /path/to/work
# 日志文件的路徑
# path.logs: /path/to/logs
# 插件安裝路徑
# path.plugins: /path/to/plugins
################################### 內(nèi)存相關(guān)配置 ####################################
# 當(dāng)JVM開始寫入交換空間時(shí)(swapping)ElasticSearch性能會(huì)低下,你應(yīng)該保證它不會(huì)寫入交換空間
# 設(shè)置這個(gè)屬性為true來鎖定內(nèi)存,同時(shí)也要允許elasticsearch的進(jìn)程可以鎖住內(nèi)存,linux下可以通過 `ulimit -l unlimited` 命令
# bootstrap.mlockall: true
# 確保 ES_MIN_MEM 和 ES_MAX_MEM 環(huán)境變量設(shè)置為相同的值,以及機(jī)器有足夠的內(nèi)存分配給Elasticsearch
# 注意:內(nèi)存也不是越大越好,一般64位機(jī)器,最大分配內(nèi)存別才超過32G
############################## 網(wǎng)絡(luò)相關(guān)配置 ###############################
# 設(shè)置綁定的ip地址,可以是ipv4或ipv6的,默認(rèn)綁定本機(jī)ip
# network.bind_host: 192.168.0.1
# 設(shè)置其它節(jié)點(diǎn)和該節(jié)點(diǎn)交互的ip地址,如果不設(shè)置它會(huì)自動(dòng)設(shè)置,值必須是個(gè)真實(shí)的ip地址
# network.publish_host: 192.168.0.1
# 同時(shí)設(shè)置bind_host和publish_host上面兩個(gè)參數(shù)
# network.host: 192.168.0.1 #綁定監(jiān)聽IP
# 設(shè)置節(jié)點(diǎn)間交互的tcp端口,默認(rèn)是9300
# transport.tcp.port: 9300
# 設(shè)置是否壓縮tcp傳輸時(shí)的數(shù)據(jù)焰情,默認(rèn)為false,不壓縮
# transport.tcp.compress: true
# 設(shè)置對(duì)外服務(wù)的http端口,默認(rèn)為9200
# http.port: 9200
# 設(shè)置請(qǐng)求內(nèi)容的最大容量,默認(rèn)100mb
# http.max_content_length: 100mb
# 使用http協(xié)議對(duì)外提供服務(wù),默認(rèn)為true,開啟
# http.enabled: false
? ? ? ?以上就是elasticsearch的基礎(chǔ)配置陌凳,由于elasticsearch每個(gè)版本的config/elasticsearch.ym文件內(nèi)容都不同,所以可能我以上寫的這些配置在大家那里看到又是不一樣的内舟。如果某個(gè)屬性在某個(gè)elasticsearch的版本中不存在合敦,那么直接添加這個(gè)屬性上去測試一下效果,他們的屬性大多數(shù)都是可以通用的验游。
取消主機(jī)限制
? ? ? ?接下來我們具體來配置一下充岛,讓elasticsearch服務(wù)能夠給外部IP訪問:
? ? ? ?首先我們通過剛剛的基礎(chǔ)配置發(fā)現(xiàn),網(wǎng)絡(luò)相關(guān)配置中有3個(gè)配置項(xiàng)是跟IP有關(guān)的:network.bind_host耕蝉、network.publish_host和network.host付鹿,他們的用法分別是:
network.bind_host:
? ? ? ?在默認(rèn)情況下elasticsearch服務(wù)只能本機(jī)訪問砰碴,如果外部主機(jī)需要訪問該elasticsearch服務(wù)迷守,就需要把外部的這臺(tái)主機(jī)的IP配置到該屬性中暖呕。那如果希望elasticsearch服務(wù)不限制所有主機(jī)的訪問,那么該屬性可以設(shè)置為0.0.0.0场躯。
network.publish_host:
? ? ? ?在默認(rèn)情況下elasticsearch的節(jié)點(diǎn)不能跨主機(jī)交互谈为,如果需要,則在該屬性配置elasticsearch節(jié)點(diǎn)服務(wù)所在的IP踢关。那如果希望elasticsearch服務(wù)不限制所有主機(jī)的節(jié)點(diǎn)交互伞鲫,那么該屬性可以配置為0.0.0.0。
network.host:
? ? ? ?同時(shí)設(shè)置bind_host和publish_host兩個(gè)參數(shù)耘成,那我們只需要把該屬性設(shè)置為0.0.0.0榔昔,那么就不限制主機(jī)的訪問和節(jié)點(diǎn)的交互
那么我們就來修改elasticsearch的配置文件:
$ vi config/elasticsearch.yml
找到network.host這行配置,把注釋解開瘪菌,值設(shè)置為0.0.0.0
$ network.host: 0.0.0.0
退出并保存elasticsearch.yml文件撒会,然后重啟elasticsearch服務(wù)
關(guān)閉elasticsearch服務(wù):
使用強(qiáng)制殺進(jìn)程的方式關(guān)閉elasticsearch
啟動(dòng)elasticsearch服務(wù):
$ ./bin/elasticsearch #注意不要加上-d參數(shù),因?yàn)榻酉聛砜赡軙?huì)報(bào)錯(cuò)师妙,在當(dāng)前控制臺(tái)上查看錯(cuò)誤信息比較方便
如果啟動(dòng)出現(xiàn)以下錯(cuò)誤:
ERROR: bootstrap checks failed
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
則執(zhí)行以下操作:
切換到root用戶
$ su root
修改配置sysctl.conf:
$ vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
退出并保存诵肛,然后執(zhí)行命令:
$ sysctl -p
最后,重新啟動(dòng)elasticsearch默穴,即可啟動(dòng)成功怔檩。
? ? ? ?至此,我們已經(jīng)把elasticsearch的服務(wù)取消的主機(jī)訪問的限制了蓄诽,但是我們還是不能通過外部的主機(jī)訪問elasticsearch服務(wù)薛训,因?yàn)槲覀兿到y(tǒng)的防火墻是開啟的,我們需要把elasticsearch服務(wù)的網(wǎng)絡(luò)端口放開仑氛,這樣才能讓外界訪問乙埃。我們通過地址訪問elasticsearch服務(wù):http://IP:9200可以知道它的http網(wǎng)絡(luò)端口為9200闸英,并且我們剛剛學(xué)習(xí)的配置我們發(fā)現(xiàn),網(wǎng)絡(luò)相關(guān)配置中有個(gè)http.port屬性介袜,該屬性是配置elasticsearch的http端口的甫何,默認(rèn)端口為9200,所以我們需要把9200端口放開:
$ firewall-cmd --zone=public --add-port=9200/tcp --permanent #--permanent永久生效遇伞,沒有此參數(shù)重啟后失效
重新加載防火墻:
$ firewall-cmd --reload
? ? ? ?那么這些準(zhǔn)備工作已經(jīng)完成了辙喂,接下來的章節(jié)我們就要來具體的進(jìn)入Elasticsearch的使用了。