es7不需要依赖java的环境了,其中已经整合了java环境,但是应用过程中还是碰到了一些插件需要依赖java环境的情况。
用yum安装jdk:安装了默认的jdk1.8.0版本
yum install java
基于能用命令完成的事就不去自己下载的懒人思想,还是用yum以系统服务的方式下载安装。
yum更新
yum update
在目录/etc/yum.repos.d/
目录下创建一个名为elasticsearch.repo
的文件,内容如下:
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
sudo yum install elasticsearch
/sbin/chkconfig --add elasticsearch #用于添加到开机自启动
systemctl start elasticsearch
curl -X GET localhost:9200
返回类似如下内容即成功
{
"name" : "node-1",
"cluster_name" : "movies",
"cluster_uuid" : "tKLNYk-dTGOut-cI8CWcTA",
"version" : {
"number" : "7.4.2",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "2f90bbf7b93631e52bafb59b3b049cb44ec25e96",
"build_date" : "2019-10-28T20:40:44.881551Z",
"build_snapshot" : false,
"lucene_version" : "8.2.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
上面我们提到的安装是在一个机器上面的es部署,并且采用的默认配置。接下来的工作就是将三台服务器作为一个集群,一个是master节点另外两个是slave节点。
用的是阿里云服务器,一开始因为一些端口没有设置对外开放的问题走了很多弯路,三台机器怎么都无法互相识别,找了各种办法,后来发现三个机器是在一个网段里面的。
这里是用到的几个检测进程状态的方法:
ps -ef | grep elastic
Kill -9 进程pid
netstat -lnpt
systemctl stop firewalld.service
停止firewallsystemctl disable firewalld.service
禁止firewall开机启动firewall-cmd --state
查看默认防火墙状态(关闭后显示notrunning,开启后显示running)和其他方法不太一样,使用yum方式安装的es把配置文件放在了这个目录下/etc/elasticsearch/elasticsearch.yml
,用vim编辑:
vim /etc/elasticsearch/elasticsearch.yml
然后假设三个服务器的内网ip分别是:172.26.240.210(master)、172.26.240.223、172.26.240.220
然后master服务器的yml文件内容如下:(初始内容里面的注释就没放过来了)
cluster.name: movies #cluster名字三个服务器要一样
node.name: node-1 #节点名称
node.master: true #作为主节点
node.data: true #同时存放数据
path.data: /var/lib/elasticsearch #数据路径
path.logs: /var/log/elasticsearch #日志路径
network.host: 0.0.0.0 #允许所有ip访问
http.port: 9200
transport.tcp.port: 9300 #不同节点的通信端口
#向两个slave服务器 单播
discovery.zen.ping.unicast.hosts: ["172.26.240.223:9300","172.26.240.220:9300"]
对于slave服务器1
cluster.name: movies #cluster名字三个服务器要一样
node.name: node-2 #节点名称
node.master: false #不作为主节点
node.data: true #存放数据
path.data: /var/lib/elasticsearch #数据路径
path.logs: /var/log/elasticsearch #日志路径
network.host: 0.0.0.0 #允许所有ip访问
http.port: 9200
transport.tcp.port: 9300 #不同节点的通信端口
#向两个slave服务器 单播
discovery.zen.ping.unicast.hosts: ["172.26.240.210:9300"]
另外一个slave服务器与之类似。配置好了之后启动
之前采用elasticHD插件进行可视化
https://github.com/360EntSecGroup-Skylar/ElasticHD/releases/
chmod -R 777 ElasticHD
./ElasticHD -p 127.0.0.1:9800
出现问题:
exec: "xdg-open": executable file not found in $PATH
原因: 没有安装xdg-open
安装xdg-utils之后,xdg-open命令就可以使用了.
yum install xdg-utils
因为我是在服务器部署,在本地打ip+端口访问一直访问不了。怀疑是不是有ip访问限制。
改成./ElasticHD -p 0.0.0.0:9800
启动,再远程访问,一切正常。果然-p参数是ip访问限制。
后来发现es官方有出综合可视化和数据分析的工具Kibana。
安装部署在master服务器上,并开放9301端口用于节点和索引的状态查看和管理。将kibana下载并解压后,进入kibana.yml配置文件配置相关信息,允许任何人访问,且端口为9301:
server.host: "0.0.0.0"
server.port: 9301
/usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6..0/elasticsearch-analysis-ik-7.4.2.zip
速度实在太慢,放弃了。到ik的github网页,下载对应的版本release并解压。在es的plugin文件夹下新建ik的文件夹并将解压内容拷贝进来。
plugin/ik/ik解压出来的各种文件
。