Elasticsearch使用问题总结
Elasticsearch使用问题总结
今天下载了elasticsearch的7.x版本,使用bin/elasticsearch -d 启动后,报出如下错误:
1:can not run elasticsearch as root
原来,启动的时候不能使用root用户启动,无奈,只能创建一个新用户
用户创建
- 创建用户:
useradd -m es
- 设置密码:
passwd es
更改文件拥有者(chown命令)
chown -R es:es /usr/local/java/elasticsearch-7.9.0/
1.命令格式:
chown [选项]... [所有者][:[组]] 文件...
2.命令功能:
通过chown改变文件的拥有者和群组。在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。
3.命令参数:
必要参数:
-c 显示更改的部分的信息
-f 忽略错误信息
-h 修复符号链接
-R 处理指定目录以及其子目录下的所有文件
-v 显示详细的处理信息
-deference 作用于符号链接的指向,而不是链接文件本身
切换用户
su es
再次启动成功启动
2:报错信息:
future versions of Elasticsearch will require Java 11; your Java version from [/opt/jdk1.8.0_211/jre] does not meet this requirement
解决办法(讲解):
由于Elasticsearch依赖于jdk,es和jdk有着对应的依赖关系。如果本地安装了jdk8或者和es不匹配的版本就会报错。
elasticsearh从7.0开始默认安装了java运行环境,以便在没有安装java运行环境的机器上运行。如果配置了环境变量JAVA_HOME,则elasticsearh启动时会使用JAVA_HOME作为java路径,否则使用elasticsearh根目录下jdk目录为java路径。
解决此问题:
linux:
修改elasticsearch-env
vi elasticsearch-7.9.0/bin/elasticsearch-env
3: 浏览器访问localhost:9200 无法访问, 需要开启防火墙端口9200
开启端口:9200
firewall-cmd --zone=public --add-port=9200/tcp --permanent
重启防火墙:
firewall-cmd --reload
查询端口号9200 是否开启:
firewall-cmd --query-port=9200/tcp
4、再次访问依然无法访问,修改 elasticsearch.yml 配置文件,允许外网访问。
vi /usr/local/java/elasticsearch-7.9.0/config/elasticsearch.yml
5: 再次启动,哈哈,依然报错
文件描述符:
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
解决:
vi /etc/security/limits.conf
追加以下内容:
* soft nofile 65536
* hard nofile 65536
此文件修改后需要重新登录用户,才会生效
线程数:
[2]: max number of threads [3795] for user [es] is too low, increase to at least [4096]
vi /etc/security/limits.conf
配置,如下:
* soft nproc 2048
* hard nproc 4096
虚拟内存:
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决:
vi /etc/sysctl.conf
追加以下内容:
vm.max_map_count=655360
保存后,执行:
sysctl -p
[4]: 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
ERROR: Elasticsearch did not exit normally - check the logs at /usr/local/java/elasticsearch-7.9.0/logs/elasticsearch.log
解决:
在elasticsearch
的config
目录下,修改 elasticsearch.yml
配置文件,将下面的配置加入到该配置文件中:
cluster.initial_master_nodes: ["node-1"] #这里的node-1为node-name配置的值
再次启动: