关于es是什么?能做什么?有什么优势?本文不在多说,如有不清楚请查看Elasticsearch学习,请先看这一篇!
本文主要是记录如何在linux下安装es环境以及配置,博主使用的是Centos,linux系统间相差不大。
首先ES需要运行在java8,重要的事情说三遍,一定不要求新,使用java9!一定不要求新,使用java9!一定不要求新,使用java9!
第一步,安装jdk。
1. 检测是否有java环境,rpm -qa | grep jdk或者java
2. 如果有 先卸载掉之前的java环境: rpm -e nodeps 进程名称 没有请看第三步
3. 安装jdk ,导入安装包,一般在 /usr/local/ 下创建一个 java目录作为安装目录
4. 解压文件到java目录下
5. 配置环境变量: vi /etc/profile ,在文件最后添加以下信息:根据自己的安装包修改以及安装路径
#set java environment
JAVA_HOME=/usr/local/java/jdk1.8.0_131
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
6. 保存profile 文件,并退出
7. 执行source /etc/profile 使更改的配置立即生效
8. 验证是否安装成功,java -version
第二步,下载安装ES
es下载地址,楼主使用的是5.5.2,根据自己的需要下载对应的版本。
1. 将下载好的es包上传到linux 的 /usr/local/es下,解压。
2. 强调一点,es不能使用root账户启动,因此需要创建用户和组,执行以下命令
groupadd elsearch
useradd elsearch -g elsearch
chown -R elsearch:elsearch elasticsearch-5.6.3 该命令是更改该文件夹下所属的用户组的权限
3. 创建ES的数据存放目录以及日志存放目录,建议在root的根目录下创建。
mkdir /data
chown -R elsearch:elsearch /data/
su - elsearch 切换用户
mkdir -p es/data
mkdir -p es/logs
4. 修改ES中的配置,修改后的配置文件,稍候会指出为什么要修改这些配置。
5. 运行es,sh /usr/local/es/elasticsearch-5.5.2/bin/elasticsearch ,这是前台启动,如果需要后台启动,在后面加上 -d
运行时,可能会出现以下问题。
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
解决办法: vi /etc/security/limits.conf ,添加或者修改
* hard nofile 65536
* soft nofile 65536
[2]: max number of threads [1024] for user [elastic] is too low, increase to at least [2048]
解决办法: vi /etc/security/limits.d/90-nproc.conf ,注意这里*号是必须的
* soft nproc 1024
* soft nproc 2048
[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 = 262144
执行 sudo sysctl -p /etc/sysctl.conf 让修改立即生效
[4] ERROR: [1] bootstrap checks failed
[1]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
问题原因:因为Centos6不支持SecComp,而ES5.2.1默认bootstrap.system_call_filter为true进行检测,所以导 致 检测失败,失败后直接导致ES不能启动。详见 :https://github.com/elastic/elasticsearch/issues/22899
解决方法:在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
7. 验证。curl http://192.168.17.135:9200 ,如果连接成功会有一个json字符串显示出来,浏览器输入也可以。如果还是存在问题,请检查以上配置是否都已经修改。
第三步,安装head插件
1. 下载head插件,将下载好的插件配置上传到linux中,注意不要放在es目录下,与es目录同级即可。解压
unzip elasticsearch-head-master
2. head 插件是node.js实现的,因此需要安装nodejs
curl -sL https://rpm.nodesource.com/setup_8.x | bash -
yum install -y nodejs
安装完成,验证是否安装成功:
[elastic@localhost es]$ node -v
v8.11.1
[elastic@localhost es]$ npm -v
5.6.0
3. 进入elasticsearch-head-master目录,安装grunt
npm install grunt --save-dev
npm install
4. 修改配置文件,cd 进入elasticsearch-head-master 文件夹下,执行命令vim Gruntfile.js文件:增加hostname属性,设置为*;如图:
5. 修改head插件的连接地址,vim _site/app.js 文件:修改head的连接地址:,如图所示:在js文件的最下面,我是找了蛮久,ip地址改为你的es所在服务器的ip
6. 修改配置,elasticsearch.yml,添加
http.cors.enabled: true
http.cors.allow-origin: "*"
这个配置主要是允许插件访问。
7. 在elasticsearch-head-master 下执行,npm run start 命令,启动。
这是就可以在浏览器中访问es了,注意端口是9100.成功结果如下: