Centos7+Elasticsearch7.4.2+Kibana+IK分词+ElasticHD 安装配置以及集群搭建


由于课程上的要求,需要做一个电影推荐系统,然后需要实现搜索功能,第一次配置分布式的小白如我还是碰到了各种各样的问题… 还是太菜,很多东西也不太懂,跌跌撞撞地实现了,以防以后要用到,在此做一个记录。

1. elasticSearch 7.4.2 安装

1.1 关于jdk

es7不需要依赖java的环境了,其中已经整合了java环境,但是应用过程中还是碰到了一些插件需要依赖java环境的情况。

用yum安装jdk:安装了默认的jdk1.8.0版本

yum install java

1.2 安装ES

基于能用命令完成的事就不去自己下载的懒人思想,还是用yum以系统服务的方式下载安装。

  1. yum更新
    yum update

  2. 在目录/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
  1. 然后执行sudo yum install elasticsearch
  2. 配置和启动ES服务器进程
/sbin/chkconfig --add elasticsearch #用于添加到开机自启动
systemctl start elasticsearch
  1. 测试是否成功部署 执行
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"
}

2 集群的搭建

上面我们提到的安装是在一个机器上面的es部署,并且采用的默认配置。接下来的工作就是将三台服务器作为一个集群,一个是master节点另外两个是slave节点。

用的是阿里云服务器,一开始因为一些端口没有设置对外开放的问题走了很多弯路,三台机器怎么都无法互相识别,找了各种办法,后来发现三个机器是在一个网段里面的。

这里是用到的几个检测进程状态的方法:

  1. 查找es进程: ps -ef | grep elastic
  2. 杀死某一个进程: Kill -9 进程pid
  3. 查看端口监听状态: netstat -lnpt
  4. systemctl stop firewalld.service 停止firewall
    systemctl disable firewalld.service 禁止firewall开机启动
    firewall-cmd --state 查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

2.1 配置文件

和其他方法不太一样,使用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服务器与之类似。配置好了之后启动

2.2 中文分词及可视化

2.2.1 可视化elasticHD

之前采用elasticHD插件进行可视化

  1. 首先下载Zip压缩包 : https://github.com/360EntSecGroup-Skylar/ElasticHD/releases/
  2. 修改权限:chmod -R 777 ElasticHD
  3. 运行: ./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访问限制。

2.2.2 可视化Kibana

后来发现es官方有出综合可视化和数据分析的工具Kibana。
安装部署在master服务器上,并开放9301端口用于节点和索引的状态查看和管理。将kibana下载并解压后,进入kibana.yml配置文件配置相关信息,允许任何人访问,且端口为9301:

server.host: "0.0.0.0"
server.port: 9301

2.2.2 中文分词

  • 由于es自带的四种analyzer中不包含对中文的分词处理,对于中文的处理仅仅是简单的按字分词,最终搜索效果不佳,因此选用了流行的IK分词器针对中文进行分词。
  • IK插件需要在三台服务器上分别部署。下载的版本与es的版本需要完全一致
  • 可以使用es的plugin install方法安装:
/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的文件夹,把内容放进去,否则识别不了。文件结构应该为plugin/ik/ik解压出来的各种文件
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值