Linux系統(tǒng)成功構建了Elasticsearch 6.4.0
ElasticSearch是實時的分布式且高度可擴展的數(shù)據(jù)搜索和分析引擎。它可以輕松地執(zhí)行大量的研究,分析和數(shù)據(jù)挖掘功能。如果您充分利用ElasticSearch的水平可伸縮性,那么來自生產(chǎn)環(huán)境的數(shù)據(jù)將變得更有價值。實現(xiàn)ElasticSearch的原理主要分為以下幾個階段:首先,用戶將數(shù)據(jù)發(fā)送到Elastic Search數(shù)據(jù)庫,然后使用分詞控制器對相應的句子進行分段,并將其權重和細分結果一起存儲在數(shù)據(jù)中。當用戶搜索數(shù)據(jù)時,將對結果進行分類和加權,然后將返回的結果呈現(xiàn)給用戶。今天,小編主要說明如何在Linux系統(tǒng)上按下Elasticsearch搜索引擎。
第一步首先網(wǎng)上下載elasticsearch 6.4.0的安裝包,在root 目錄下創(chuàng)建文件夾elasticsearch下,然后解壓elasticsearch 6.4.0安裝包。
第二步安裝jdk1.8以上版本,注意,最好把jdk和elasticsearch都放在同一個目錄下面,不然后面切換用戶啟動asticsearch可能會遇到?jīng)]有jdk環(huán)境變量的問題。此處步驟省略
第三步創(chuàng)建用戶組(這是因為elasticsearch 6以上版本不支持root用戶啟動)。創(chuàng)建用戶組groupadd esGroup , 創(chuàng)建用戶useradd esUser -g esGroup -p 123456 (用戶密碼,此處密碼可以省略),賦予用戶權限chown -R esUser:esGroup /root/elasticsearch
第四步:切換到esUser用戶并進入文件夾/root/elasticsearch/elasticsearch-6.4.0/bin, 輸入命令./elasticsearch 即可啟動成功。以上步驟只是實現(xiàn)了在服務器本地訪問。接下來配置遠程訪問elasticsearch服務。
第五步:進入文件夾/root/elasticsearch/elasticsearch-6.4.0/config目錄下,vi elasticsearch.yml 修改屬性network.host: 172.18.25.150 (此處為服務器內(nèi)網(wǎng)ip地址),并配置端口號http.port: 9200,保存文件即可。接下來我們使用命令./elasticsearch 啟動,此時es并不能成功啟動,出現(xiàn)以下錯誤
[2017-01-12T15:55:55,433][INFO ][o.e.b.BootstrapCheck ] [SfD5sIh] bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks
ERROR: bootstrap checks failed
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解決辦法
1.vi /etc/security/limits.conf, 追加以下內(nèi)容
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
2.vi /etc/security/limits.d/20-nproc.conf追加以下內(nèi)容
esUser soft nproc 4096
3.vi /etc/sysctl.conf 追加以下內(nèi)容
vm.max_map_count=655360
保存后,執(zhí)行:
sysctl -p
再次切換到/root/elasticsearch/elasticsearch-6.4.0/bin目錄下,輸入./elasticsearch 即可啟動成功。如還遇到錯誤如下
ava.lang.UnsupportedOperationException: seccomp unavailable: CONFIG_SECCOMP not compiled into kernel, CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER are needed
在elasticsearch.yml 添加
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
即可解決