第一部分:过程
第一步:安装JDK,elasticsearch运行是依赖jdk环境的,这个自行了解安装
第二步:
2.1 下载elasticsearch,可以自行去官网下载,我使用的是7.3.1版本,链接:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.1-linux-x86_64.tar.gz
2.2 解压安装包命令 tar -zxvf elasticsearch-7.3.1-linux-x86_64.tar.gz
2.3 创建ES用户和组(创建elsearch用户组及elsearch用户),因为使用root用户执行ES程序,将会出现错误;所以这里需要创建单独的用户去执行ES 文件;命令如下:
命令一:groupadd elsearch
命令二:useradd elsearch -g elsearch
命令三:chown -R elsearch:elsearch elasticsearch-7.3.1 该命令是更改该文件夹下所属的用户组的权限
2.4 修改ES配置文件,使用cd命令进入到config 文件下,执行 vi elasticsearch.yml 命令,如图所示,本人没有配置集群,只是简单的配置了一下,详细说明可以参考官网
2.4 vim elasticsearch-7.3.1/config/jvm.options 修改jvm内存(这有个上限32G,默认是1G,建议是总内存的一半,由于我这个服务器本身内存较小就随便设置一个先启动再说)
2.5 su elsearch 切换到es用户,到bin目录下启动 ./elasticsearch,./elasticsearch -d可以切换为后台启动,启动后在浏览器通过ip:9200可以看到以下结果
第二部分:问题
问题一:
Exception in thread "main" java.lang.RuntimeException: starting java failed with [137]
output:
error:
at org.elasticsearch.tools.launchers.JvmErgonomics.flagsFinal(JvmErgonomics.java:111)
at org.elasticsearch.tools.launchers.JvmErgonomics.finalJvmOptions(JvmErgonomics.java:79)
at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:57)
at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:89)
由于服务器内存不足,elasticsearc的jvm默认内存是1G,可以通过修改elasticsearch的config/jvm.options,上面安装过程有写到,请留意看
问题二:
memory locking requested for elasticsearch process but memory is not locked
原因:锁定内存失败
解决方案:
切换到root用户,编辑limits.conf配置文件, 添加类似如下内容:
sudo vim /etc/security/limits.conf
添加如下内容:
* soft memlock unlimited
* hard memlock unlimited
备注:* 代表Linux所有用户名称
保存、退出、重新登录才可生效
临时取消限制
ulimit -l unlimited
问题三
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
原因:最大虚拟内存太小
解决方案:切换到root用户下,修改配置文件sysctl.conf
sudo vim /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl -p
问题四:
the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
到es的config目录下,修改elasticsearch.yml的配置
#cluster.initial_master_nodes: ["node-1", "node-2"]
cluster.initial_master_nodes: ["node-1"] 这个的话,这里的node-1是上面一个默认的记得打开就可以了