Elasticsearch官方下载地址:https://www.elastic.co/cn/downloads/elasticsearch
elasticsearch-7.10.0地址 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.0-linux-x86_64.tar.gz
上传到usr/local
解压

 tar -zxvf elasticsearch-7.10.0-linux-x86_64.tar.gz

elasticsearch目录结构1.png
进入到elasticsearch/bin目录下

cd bin

elasticsearch2.png
然后启动elasticsearch

./elasticsearch

会发现报错,原因是服务器上的JDK是8版本,而新版的elasticsearch支持的是JDK11

解决方法
elasticsearch目录中,其实官方自带了JDK11,我们只需配置elasticsearch官方自带的JDK11即可

cd elasticsearch/jdk

然后使用pwd打印路径,然后复制
进入elasticsearch/bin

cd elasticsearch/bin

会发现有一个elasticsearch-env文件,然后进行编辑,把刚才复制的JDK路径配置进去

vi elasticsearch-env

elasticsearch3.png
添加set -e -o pipefail下面添加上
elasticsearch4.png

JAVA_HOME="/usr/local/elasticsearch-7.10.0/jdk"

编辑完成之后,再次启动elasticsearch,发现还是会报错
错误日志

 [2020-12-02T15:26:18,957][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [VM-0-6-centos] uncaught exception in thread [main]
    org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
            at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:174) ~[elasticsearch-7.10.0.jar:7.10.0]
            at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161) ~[elasticsearch-7.10.0.jar:7.10.0]
            at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-7.10.0.jar:7.10.0]
            at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:127) ~[elasticsearch-cli-7.10.0.jar:7.10.0]
            at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-7.10.0.jar:7.10.0]
            at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126) ~[elasticsearch-7.10.0.jar:7.10.0]
            at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-7.10.0.jar:7.10.0]
    Caused by: java.lang.RuntimeException: can not run elasticsearch as root
            at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:111) ~[elasticsearch-7.10.0.jar:7.10.0]
            at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:178) ~[elasticsearch-7.10.0.jar:7.10.0]

报错原因是为了安全,不能以root用户启动,需要新建一个用户才能启动
创建用户组,然后统一方便使用

groupadd es

创建szx用户,归属于es用户组

useradd szx -g es

刚刚创建的szx用户是没有elasticsearch目录权限,需要为es组的新用户授权

chown -Rf szx:es /usr/local/elasticsearch-7.10.0

创建好之后,使用ll命令就会发现szx用户已经有了elasticsearch访问权限,切换到刚刚创建的szx用户
su szx
然后再次启动elasticsearch

./elasticsearch

elasticsearch5.png
查看elasticsearch进程

ps -ef|grep elasticsearch

通过命令方式本机测试elasticsearch

curl http://127.0.0.1:9200

elasticsearch6.png
通过浏览器访问
http://127.0.0.1:9200

elasticsearch7.png
会发现访问不了,需要修改配置

cd elasticsearch-7.10.0/config/

找到elasticsearch.yml文件,然后进行编辑
elasticsearch8.png

vi elasticsearch.yml

elasticsearch9.png
找到network.host值修改为0.0.0.0,然后再找到http.port把默认注释去掉,然后wq进行保存
再次启动会发现这3个错误
elasticsearch10.png

   [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    [11]: 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
    ERROR: Elasticsearch did not exit normally - check the logs at /usr/local/elasticsearch-7.10.0/logs/elasticsearch.log

解决方法
切换回root用户

su root

第一个错误解决
找到/etc/security/limits.conf文件进行编辑

vi /etc/security/limits.conf

在文件末尾添加如下信息

es soft nofile 65535
es hard nofile 65535
es soft nproc 4096
es hard nproc 4096

elasticsearch11.png
第二个错误解决方法

vi /etc/sysctl.conf

在文件末尾添加如下信息

vm.max_map_count = 262144

elasticsearch12.png
保存之后,使用命令重新加载虚拟内存配置

sysctl -p

第三个错误解决方法

vi /usr/local/elasticsearch-7.10.0/config/elasticsearch.yml

在文件末尾添加如下信息

discovery.seed_hosts: ["192.168.10.100"]
cluster.initial_master_nodes: ["192.168.10.100"]

elasticsearch13.png
修改完成之后,切换会szx用户加-d以后台方式启动elasticsearch

./elasticsearch -d

elasticsearch14.png
查看elasticsearch后台进行

ps -ef|grep elasticsearch

使用命令的方式测试本机curl http://127.0.0.1:9200
发现可以返回一段json数据
然后用浏览器再次访问,发现远程也可以成功访问了
elasticsearch15.png

Last modification:June 5, 2023
如果觉得这篇技术文章对你有用,请随意赞赏