Elasticsearch-01篇(单机版简单安装)
- 1. 前言
- 1.1 关于 Elastic Stack
- 2. Elasticsearch 的安装(Linux)
- 2.1 准备工作
- 2.1.1 下载
- 2.1.2 解压(启动不能用root,所以最好此处换个用户)
- 2.2 修改相应的配置文件
- 2.2.1 安装的配置文件 elasticsearch.yml
- 2.2.2 vim /etc/sysctl.conf
- 2.3 启动es + 问题
- 2.3.1 启动
- 2.3.2 遇到的问题
- 2.3.2.1 can not run elasticsearch as root
- 2.3.2.2 the default discovery
- 2.3.2.3 max virtual memory areas vm.max_map_count [65530]
- 2.4 访问
- 2.5 其他问题(可忽略)
- 2.5.1 JDK 版本问题
- 2.5.1.1 问题描述
- 2.5.1.2 问题原因 + 解决问题
- 3. Elasticsearch 的安装(docker)
1. 前言
1.1 关于 Elastic Stack
- 首先,先简单了解一下
Elastic Stack
:
Elastic Stack
的核心产品包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为ELK Stack
)等等。能够安全可靠地从任何来源获取任何格式的数据,然后对数据进行搜索、分析和可视化。 - 更多请看官网:
https://www.elastic.co/cn/elastic-stack/.
2. Elasticsearch 的安装(Linux)
2.1 准备工作
2.1.1 下载
- 复制下面地址,可直接下载:
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.2-linux-x86_64.tar.gz. - 官网更多版本地址,下载自己需要的即可:
https://www.elastic.co/cn/downloads/past-releases#elasticsearch.
2.1.2 解压(启动不能用root,所以最好此处换个用户)
- 关于创建用户,可以参考下面的文章:
linux下新建用户并给用户授权以及解决sudo不能使用问题. - 上传服务器上之后,直接解压
tar -zxvf elasticsearch-7.5.2-linux-x86_64.tar.gz
2.2 修改相应的配置文件
2.2.1 安装的配置文件 elasticsearch.yml
-
修改配置如下:
network.host: 0.0.0.0 http.port: 9200 discovery.seed_hosts: ["127.0.0.1"] cluster.initial_master_nodes: ["node-1"]
2.2.2 vim /etc/sysctl.conf
- 如下:
vim /etc/sysctl.conf
看网上还有修改别的,我这里没遇到,跟着报错提示修改的,就先配置了这么多vm.max_map_count = 262144
2.3 启动es + 问题
2.3.1 启动
-
启动 es 命令,如下:
./elasticsearch
-
查看进程
ps -ef | grep elasticsearch
2.3.2 遇到的问题
2.3.2.1 can not run elasticsearch as root
- 问题描述,如果用root用户刚安装就直接用root用户启动,就会报错,如下
fatal exception while booting Elasticsearchjava.lang.RuntimeException: can not run elasticsearch as root
- 问题原因:
- 这个错误提示表示不能以root用户身份运行 Elasticsearch。这是因为安全性考虑,Elasticsearch不允许以root用户身份运行,以防止潜在的安全漏洞。
- 解决问题:
- 为了解决这个问题,可以使用非root用户来运行 Elasticsearch。可以创建一个新的用户,并将其授权给 Elasticsearch 相关的目录和文件,然后使用该用户来启动 Elasticsearch。,具体如下:
- 创建启动用户 ela(我这里是另一台机器上的,用的是 ela 用户)
- 为什么要创建启动用户?
这是因为安全性考虑,Elasticsearch不允许以root用户身份运行,以防止潜在的安全漏洞。 - 创建新用户如下:
- 创建一个新用户
useradd ela
- 给新用户设置密码
passwd ela
- 将 Elasticsearch 安装目录授权给新用户
ela
chown -R ela:ela /root/soft/softWare/elasticsearch-8.6.1
- 如下:
- 创建一个新用户
- 为什么要创建启动用户?
- 如果上面处理完之后遇到权限问题,请看下面的文章:
linux下新建用户并给用户授权以及解决sudo不能使用问题.
- 创建启动用户 ela(我这里是另一台机器上的,用的是 ela 用户)
- 为了解决这个问题,可以使用非root用户来运行 Elasticsearch。可以创建一个新的用户,并将其授权给 Elasticsearch 相关的目录和文件,然后使用该用户来启动 Elasticsearch。,具体如下:
2.3.2.2 the default discovery
- 如下:
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
- 解决办法,添加下面的配置
discovery.seed_hosts: ["127.0.0.1"] cluster.initial_master_nodes: ["node-1"]
2.3.2.3 max virtual memory areas vm.max_map_count [65530]
- 如下:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
- 解决办法如下:
vim /etc/sysctl.conf
vm.max_map_count = 262144
- 重新加载/etc/sysctl.conf配置
sysctl -p
2.4 访问
- 如下:
http://IP:9200/
2.5 其他问题(可忽略)
2.5.1 JDK 版本问题
2.5.1.1 问题描述
- 问题描述,如下:
future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/soft/install/jdk1.8.0_151/jre] does not meet this requirement
2.5.1.2 问题原因 + 解决问题
- 首先声明:
我这个版本,可以不用处理,能正常启动,网上有提供别的处理方法,没细看,放下面了,想了解的可以看看,没细看没尝试,所以下面的只是参考!! - 问题解释:
- 上面报错提示即要求使用捆绑的JDK,就是es自己内置了JDK.
- 如果Linux服务本来没有配置JDK,则会直接使用es目录下默认的JDK,就不会报上面的错。
- 而如果Linux服务器上安装了jdk,ES 就会使用我们 Linux 安装的 JDK ,这个时候如果两个JDK的版本不一致,就会造成JDK不能正常运行,就报上面的错误。
- 上面也看到,我这里是自己安装过了 JDK 是1.8的,需要的是Java 11
- 解决问题:
修改配置文件vim ./elasticsearch
(安装目录bin下),添加下面的配置信息:############## 添加配置解决jdk绑定问题 ############## # 将jdk修改为es中自带jdk的配置目录 export JAVA_HOME=/root/soft/softWare/elasticsearch/elasticsearch-7.5.2/jdk export PATH=$JAVA_HOME/bin:$PATH if [ -x "$JAVA_HOME/bin/java" ]; then JAVA="/root/soft/softWare/elasticsearch/elasticsearch-7.5.2/jdk/bin/java" else JAVA=`which java` fi
3. Elasticsearch 的安装(docker)
- 后续