本文简要记录 Linux 环境下 ES 安装遇到的问题和解决思路。安装ES实质上是很简单的,不管是Win平台还是Linux环境,都是下载ES的压缩包然后直接解压即可,由于ES压缩包自带jdk因此我们也不需要额外关注jdk,仅仅需要解压即可。但是这也带来一些配置方面的问题,下文首先介绍如何安装,然后介绍安装过程最常见的错误,最后附带中文IK分词器插件的安装方式。
这里推荐几个博客:
ES 8.x 系列教程:ES 8.0 服务安装(可能是最详细的ES 8教程)
Linux环境下安装Elasticsearch,史上最详细的教程来啦~
Linux环境安装Elasticsearch
ES 在Linux下的安装
注:本文只介绍ES 7.x以后的版本安装,因为7.x以后的版本自带JDK,这就意味着不会和我们本地已有的JDK产生冲突,使用起来真的很方便
1. 首先下载Es压缩包,下载地址:
https://www.elastic.co/cn/downloads/past-releases#elasticsearch
2. 解压到 /usr/local/ 文件夹下:
unzip elasticsearch-x.x.x.zip /usr/local/
或者将压缩包放到/usr/local/es下然后执行
tar -zxvf elasticsearch-7.11.2-linux-x86_64.tar.gz
以elasticsearch-8.2.0为例,会在/usr/local/下得到一个新的 /usr/local/elasticsearch-8.2.0/
目录,以后的操作,包括启动、配置等就在这里进行了。目录结构如下(图片引用自此博客):
3. 其实至此 Es 安装就算结束了,不过先不要着急启动,因为Es不允许root用户启动,最好创建一个专门用于启动Es的用户:
- 创建elastic账号
useradd user-es // user-es是我自己起的,可以修改成你想要的名字
- 设置user-es账号的密码:
passwd user-es
- 为账号赋予目录权限
chown -R user-es:user-es /usr/local/elasticsearch-xxx
4. 这下可以愉快地启动Es了:
- 首先su到 我们的专用es账户:
su user-es
系统提示输入密码,这个密码就是上一步设置的密码。
(或许你在这里会得到一个报错信息,请自行查找解决方案,很简单) - 然后进入bin目录
cd /usr/local/elasticsearch-8.2.0/bin
- 启动elasticsearch
./elasticsearch
倘若成功启动,8.x版本会出现类似下图的界面,7.x及以下版本会跳出很多log,但是最后一行会出现一个 started 单词,告知启动成功:
ES 在启动过程里会遇到的问题
如何验证是否启动es了?最直接的就是你发现自己的命令行重新出现了
$
,这表明你启动失败了,你可以重新输入命令了。
众所周知,一杯茶一包烟,一个环境配一天,在上文的第4步里,很大概率是没法正常启动Es的。一般就是因为以下几个问题,
用了root用户启动
如果按照上文所述创建新用户并启动,则可以避免此问题,请参阅上文步骤 3、4。Es 8.0加强了安全性,需要解除之(生产环境还是加上吧),操作如下:
- 打开配置文件
vim /usr/local/elasticsearch-8.2.0/config/elasticsearch.yml
- 找到下面几个地方,全改成
false
- 抛出日志,大意是硬盘空间不足(出现 disk 90% 之类的字样),健康值为红色,需要避免空间监测,操作如下:
- 打开配置文件
vim /usr/local/elasticsearch-8.2.0/config/elasticsearch.yml
- 在末尾添加:
cluster.routing.allocation.disk.threshold_enabled: false
- 抛出日志,大意是要下载 geoip 数据(看见 geoip 这个单词,大概就是这个错误了),健康值为红色,需要避免空间监测,操作如下:
- 打开配置文件
vim /usr/local/elasticsearch-8.2.0/config/elasticsearch.yml
- 在末尾添加:
ingest.geoip.downloader.enabled: false
- 外部无法访问localhost:9200 ,需要在配置文件里允许我们远程访问数据库:
- 打开配置文件
vim /usr/local/elasticsearch-8.2.0/config/elasticsearch.yml
-
找到下面几个,输入之:
- 最最最最常见的错误:出现bootstrap之类的字样:
用root权限改下列文件:
vim /etc/sysctl.conf
增加 vm.max_map_count=262144
-
用root权限改下列文件,注意第一列的用户名,用哪个用户启动es就写成哪个用户名:
vi /etc/security/limits.conf
user-es soft nofile 262144
user-es hard nofile 524288
user-es soft nproc 4096
user-es hard nproc 4096
刷新配置
sysctl -p
重启服务器即可
安装中文 IK 分词器
在 https://github.com/medcl/elasticsearch-analysis-ik/releases 中,提供了各个 elasticsearch-analysis-ik 插件版本。要注意,一定和 Elasticsearch 版本一致。例如说 Elasticsearch 版本是 7.16.2 ,所以需要使用 elasticsearch-analysis-ik-v7.16.2 。
- 下载
#当前目录
[es@izuf672oio5mc4fbyj0s0jz elasticsearch-7.16.2]$ pwd
/home/es/es/elasticsearch-7.16.2
#开始下载
[es@izuf672oio5mc4fbyj0s0jz elasticsearch-7.16.2]$ wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.16.2/elasticsearch-analysis-ik-7.16.2.zip
- 解压:
需要解压到 plugins/ik/ 目录下
$ unzip elasticsearch-analysis-ik-7.16.2.zip -d plugins/ik/
重启es:
./elasticsearch
配置elasticsearch允许head插件远程访问
vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"