目录
2、创建centos用户启动es(高版本的es不能使用root进行启动)
info:elasticsearch7版本需要对应jdk 11, 所以建议使用 elasticsearch6,对应jdk8
1、jdk安装
如果服务器没有安装jdk,可以参考CentOS7安装jdk1.8-源码安装、openjdk安装、docker安装
2、创建centos用户启动es(高版本的es不能使用root进行启动)
创建 linux用户:adduser mostyEs
修改mostyEs用户的密码:passwd mostyEs (输入两次密码,比如当前为:Kevin123)
3、下载安装es
在 /home/mosty 目录下创建es文件夹 mkdir -p /home/mosty/es
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.tar.gz
如果内网不能执行wget可使用已下载的安装包自行上传,链接: https://pan.baidu.com/s/1Rs2fXrgPAge_5t9KduNFDQ?pwd=a9tbhttps://pan.baidu.com/s/1Rs2fXrgPAge_5t9KduNFDQ?pwd=a9tb解压:tar -zxvf elasticsearch-6.6.0.tar.gz
为上面创建的 mostyEs用户,设置es目录的权限:
chown -R mostyEs:mostyEs /home/mosty/es/elasticsearch-6.6.0
切换为 mostyEs用户: su mostyEs 输入密码
进入es安装目录的bin文件夹: cd /home/mosty/es/elasticsearch-6.6.0/bin
后台启动es:./elasticsearch -d
可以查看es进程是否启动: ps -ef| grep elasticsearch
或者可以使用curl命令:curl 127.0.0.1:9200
4、ik分词器安装
此时,如果用户还是为mostyEs,需要先切回root用户:su root 输入密码
ik分词器的地址为:https://github.com/medcl/elasticsearch-analysis-ik
【不建议,会有很多问题】可以在bin目录下执行 ./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.0.0/elasticsearch-analysis-ik-x.x.x.zip
下载ik分词器包(可以在es的安装目录的plugins文件下执行,或者解压后放到该目录下):wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.0/elasticsearch-analysis-ik-6.6.0.zip
解压:unzip elasticsearch-analysis-ik-6.6.0.zip
如果没有unzip命令,可以使用yum安装: yum install -y unzip
重命名:mv elasticsearch-analysis-ik-6.6.0 analysis-ik
ik提供了两种分词策略:ik_max_word【往处理度拆分】或ik_smart【往细粒度拆分】,如果不满足,还可以自定义,设置一个列表:
在目录的 plugins/analysis-ik/config/IKAnalyzer.cfg.xml 文件中修改:ext_dict属性为:mosty.dic
此时可以在同级目录下创建文件,并写入想要分词的指定值:touch mosty.dic
至此,ik分词器插件安装完成,可以重启es
查看es进程号: ps -ef| grep elasticsearch
kill -9 进程号
当然如果用户是root,则切换为mostyEs: su mostyEs
后台启动es(进入es bin目录): ./elasticsearch -d
5、Head插件安装
ElasticSearch-head插件要用到grunt,而grunt需要用到npm包管理器,所以node.js是必须安装的;
5.1、node.js安装
node可选包地址为:https://nodejs.org/en/download/或https://nodejs.org/en/download/current/
下载安装包(比如当前的安装路径为/home/mosty/nodejs/):
wget https://nodejs.org/dist/v17.6.0/node-v17.6.0-linux-x64.tar.xz
如果执行wget不能链接外网镜像,也可以下载镜像后上传,链接:https://pan.baidu.com/s/1hBTuCYXVNGm8bbMMz8n1Rw?pwd=3wm7
解压安装包:tar -xvf node-v17.6.0-linux-x64.tar
建立软连接方便启动:
ln -s /home/mosty/nodejs/node-v17.6.0-linux-x64/bin/node /usr/local/bin/node
ln -s /home/mosty/nodejs/node-v17.6.0-linux-x64/bin/npm /usr/local/bin/npm
查看版本:node -v; npm -v;
5.2、grunt-cli安装
执行命令安装:npm install -g grunt-cli
查看grunt版本:npm list grunt
5.3、cnpm安装
npm install -g cnpm --registry=https://registry.npm.taobao.org
并创建cnpm的软链接:
ln -s /home/mosty/nodejs/node-v17.6.0-linux-x64/bin/cnpm /usr/local/bin/cnpm
5.4、Head插件的下载安装
下载文件:wget https://github.com/mobz/elasticsearch-head/archive/master.zip
解压:unzip master.zip
修改名称:mv elasticsearch-head-master elasticsearch-head
cd 到 elasticsearch-head目录下执行:cnpm install
修改head的配置文件 Gruntfile.js connect->server->options 增加host为 *(或者修改为 '0.0.0.0'),都可以访问:
在 _site/app.js文件修改head对应的 es地址,如果两个在一台服务器就不用改了(文件太大可以直接搜 /9200 ),【当前地址为 http://localhost:9200,需要修改为对应的内网或者外网ip 否则head上再发起请求时,发起的就是 该地址的url】如下:
不修改为本机的ip,head访问就会如下:
【最后还需要修改es配置】
es安装目录config下的 elasticsearch.yml 增加配置(es默认只能本机访问9200端口,此时需要允许cors方式的跨越访问),然后重启 es:
http.cors.enabled: true
http.cors.allow-origin: '*'
es默认只能本机访问9200,如果其他ip需要访问,则需要修改 config目录下的 elasticsearch.yml, 开放bind配置: network.host: 0.0.0.0
当配置network.host打开后,需要调整几个地方,否则启动会异常,
1)、修改系统map
修改 /etc/sysctl.conf 添加 vm.max_map_count = 262144
最后执行:sysctl -p
2)、查看当前的最大句柄数: ulimit -n
修改 /etc/security/limits.conf 可以将* 即所有用户的打开句柄数
也可以像下面一样,专门为用户设置句柄数
需要重启centos服务 reboot
再切换用户为 mostyEs, 查看当前用户的句柄数:ulimit -Hn
es6.0的版本不支持,浏览器请求头信息带Content-Type header [application/x-www-form-urlencoded], 如果使用老版本的elasticsearch-head服务端的es会返回下面的错误信息,{"error":"Content-Type header [application/x-www-form-urlencoded] is not supported","status":406}
需要修改 _site/vendor.js 。找到对应的行 if ( !s.crossDomain && !headers["X-Requested-With"] ) 的前面增加一行 headers["Content-Type" ] = "application/json" ,如下图:
启动head插件的 node_modules/grunt/bin 目录:
cd /home/mosty/head/elasticsearch-head/node_modules/grunt/bin/
启动 ./grunt server
后台启动:nohup grunt server & exit;
关闭服务进程:netstat -anp| grep 9100 杀进程: kiill [-9] 进程号
此时,如果防火墙没有开启,获取防火墙已经开启了9100端口,就可以使用浏览器查看head页面:http://ip:9100