声明: 本文章是本人第一次学习ES,把过程和过程中遇到问题,以及百度后解决方案记录下来,如有问题,希望高手指出,谢谢。
环境:服务器为linux centos7 64位, jdk8 , ES7.14.1
1. 下载elasticseach https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.14.1-linux-x86_64.tar.gz
2. 解压缩下载的文件
tar -zxvf elasticsearch-7.14.1-linux-x86_64.tar.gz
3. 进入解压文件里的bin目录, 执行 ./elasticsearch 命令,报如下错误
java.lang.RuntimeException: can not run elasticsearch as root
4. 解决方式,启动时加入允许root用户启动:
./elasticsearch -Des.insecure.allow.root=true
5. 重新启动,报如下错误:
Option Description
------ -----------
-E <KeyValuePair> Configure a setting
-V, --version Prints elasticsearch version information and exits
-d, --daemonize Starts Elasticsearch in the background
-h, --help show help
-p, --pidfile <Path> Creates a pid file in the specified path on start
-q, --quiet Turns off standard output/error streams logging in console
-s, --silent show minimal output
-v, --verbose show verbose output
ERROR: D is not a recognized option
百度搜索结果建议创建一个单独的用户用来运行ElasticSearch
6. 创建用户组用户启动es:
groupadd esgroup
useradd esuser -g esgroup -p espassword
//进入解压出来的es文件夹根目录
cd 存放es文件夹目录
chown -R esuser:esgroup 整个解压下来的es文件夹
//切换用户
su esuser
//到bin目录下执行
./elasticsearch
7. 重新启动后,日志出现以下日志,即启动成功
8. 如遇其他类似内存不足的,请自行百度修改配置,答案很多,因为我没遇到,所以没尝试
9. 由于安装在服务器,需要远程访问:http://服务器ip:9002, 回车提示refused to connect.这是由于 es默认只支持本地访问
10. 修改配置config/elasticsearch.yml,放开network.host的注释,值设置成远程访问的ip,保存, 重启西东es,报如下错,有3个检查失败:
解决第一个错误:root账户登录
vim /etc/security/limits.conf 文件最后加入:
esuser soft nofile 65536
esuser hard nofile 65536
esuser soft nproc 4096
esuser hard nproc 4096
此配置需要重退出esuser账户,重新登录才生效
解决第二个错误:root账户登录
vim /etc/sysctl.conf 文件最后加入
vm.max_map_count=655360
执行 sysctl -p 保存配置
解决第三个错误:
es目录的config目录下,
vi elasticsearch.yml
放开配置: node.name: node-1
放开配置:cluster.initial_master_nodes: ["node-1"]
配置文件最后添加如下配置,解决跨域问题
http.cors.enabled: true
http.cors.allow-origin: "*"
11. 保存重启,重启成功,访问http://服务器ip:9200,出现如下json,部署成功