安装Elasticsearch
Elasticsearch下载地址:https://www.elastic.co/cn/downloads/elasticsearch
也可以直接使用wget下载到某目录下, 本文所有下载的包都放在 /home/tools 中, 解压后移到 /home/apps目录下
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1.zip
下载unzip工具,如果已经安装过忽略该步骤
yum install -y unzip zip
解压安装包
unzip elasticsearch-6.3.1.zip
将解压后的文件夹移动到 /home/apps 下, 此步骤非必须,但为了后续需要安装的东西太多防止目录混乱所以与安装包分离
mv elasticsearch-6.3.1 /home/apps/
到 /home/apps 下,elasticsearch 就解压完毕了,但要直接启动会报各种错误,接下来开始配置吧
----------------------------------- Elasticsearch配置 --------------------------------------
注:文章默认已配置好1.8版本jdk, 如果没配置请先配置一下!
修改elasticsearch.yml
cd /home/apps/elasticsearch-6.3.1/configvi elasticsearch.yml
修改如下几项(配置集群名称,这里端口默认为9200,如果需要修改可以改http.port)
cluster.name: xxx-es
network.host: 0.0.0.0
path.logs: /home/apps/elasticsearch-6.3.1/logs
path.data: /home/apps/elasticsearch-6.3.1/data #默认没有该目录,需要手动新建 mkdir data
增加以下两个配置(跨域访问)
http.cors.enabled: truehttp.cors.allow-origin: "*"
保存修改
新建启动用户 (ES5.0 以后不允许使用root角色启动)
#添加用户 adduser elasticsearch
#设置密码 passwd elasticsearch
#授权 chown -R elasticsearch /elasticsearch-6.3.0
#切换用户 su elasticsearch
#启动 cd elasticsearch-6.3.0/bin ./elasticsearch
启动可能会报如下错误
切换回root角色再为该用户授权一次就可以了, 可能是启动的时候新生成了文件没有权限
su root
chown -R elasticsearch /home/apps/elasticsearch-6.3.1
错误解决方案
再启动一次,发现依旧报错
原因:无法创建本地文件问题,用户最大可创建文件数太小
解决方案:
#切换回root账户 su root#修改limits.conf文件 vi /etc/security/limits.conf
在文件最底部增加如下配置
* soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096
切换回elasticsearch账号,再启动一次ES吧,又报错了
原因:最大虚拟内存太小
解决方案:
#切换至root账户 su root#修改sysctl.conf vi /etc/sysctl.conf
添加如下配置
vm.max_map_count=655360
执行 sysctl -p 以刷新配置
再次切换回elasticsearch用户,启动ES
启动成功! 我们打开浏览器访问一下吧~
防火墙配置
发现打不开,我们之前已经配置了所有节点可以访问,并且也配置了可跨域,为什么打不开呢?
别忘了还有防火墙在啊。需要把9200的对外访问端口打开
在控制台输入以下命令
#开启9200端口 firewall-cmd --zone=public --add-port=9200/tcp --permanen
#刷新配置
firewall-cmd --reload
再次访问http://192.168.193.129:9200/
好~ES的配置到此结束
服务启动与关闭
直接用./elasticsearch启动一旦关闭控制台服务便会停掉,因此需要使用 ./elasticsearch -d 在后台启动
如何关闭服务?
ps -ef|grep elasticsearch
杀掉对应的进程号就可以了
------------------------------- Elasticsearch-Head 安装及配置 --------------------------
下载及安装
面对这么个提示一定一脸懵逼吧,我要怎么查询数据?怎么知道有什么索引? Head 插件就是为了解决这个问题的,它提供可视化的页面方便用户查看节点信息,查询数据等。
接下来就开始安装Head插件吧
Elasticsearch5.0 以后head不再在plugins中直接安装了,需要独立安装
下载地址: https://pan.baidu.com/s/1kX1cMzlb6jWvHeDr2N5e-g
将下载后的压缩包放到 /home/tools 下
#解压压缩包 unzip elasticsearch-head.zip#将解压后的文件夹移动/home/apps下 mv elasticsearch-head /home/apps
进入head文件目录
cd elasticsearch-head
安装grunt用来启动head
#安装grunt命令行工具grunt-cli npm install -g grunt-cli#安装grunt及其插件 npm install grunt --save-dev#查看安装版本情况 grunt -version
配置连接信息
vi Gruntfile.js
修改如下配置(ip 和 端口号)
保存后配置防火墙,开放9100端口,在控制台输入
firewall-cmd --zone=public --add-port=9100/tcp --permanent
firewall-cmd --reload
启动head
grunt server
启动成功
在浏览器输入 http://192.168.193.129:9100
安装完成
服务启动与关闭
后台方式启动
nohup grunt server &
关闭head
#查询端口占用 netstat -tunlp |grep 9100
如果netstat没有安装,执行以下命令安装
yum install net-tools
#杀死进程
kill -9 9919
Elasticsearch-head 连接 Elasticsearch-6.0 + 检索问题
Head 连接Elasticsearch6时其他功能都好使, 但数据浏览模块不能显示数据了,一直显示搜索中,但不返回结果
看一下网络流可知报406 错误
解决办法:
cd elasticsearch-head/_site
vi vendor.js
修改如下
#1. 6886行 contentType: "application/x-www-form-urlencoded 改为 contentType: "application/json;charset=UTF-8"
#2. 7574行 var inspectData = s.contentType === "application/x-www-form-urlencoded" && 改为 var inspectData = s.contentType === "application/json;charset=UTF-8" &&
重新启动elasticsearch-head就可以正常检索了