ElasticSearch安装及分布式

Elastic官网

1. ElasticSearch简介

ElasticSearch,简称ES,是一款基于Apache Lucene构建的开源搜索引擎,采用Java编写,提供简单易用的RESTFul API,可以轻松的横向扩展,支持PB级的结构化或非结构化数据处理;

ElasticSearch可用的应用场景主要有:

  1. 海量数据分析引擎(大GB甚至TB级的数据)
  2. 站内搜索引擎
  3. 数据仓库(利用ES强大的分布式搜索能力,存储PB级别的结构化或非结构化数据)

2. ElasticSearch安装

2.1 ElasticSearch版本

​ ElasticSearch的历史,起初是由1.x版本到2.x版本然后直接跳到了5.x版本再到目前的6.x,7.x时代,直接跳版本是因为为了统一整体的版本号;作为老版本2.x时代,使用起来会比较稳定,而且存在着许多的插件,但是因为版本过劳,所以社区基本上也就没有什么维护或者更新了,且相对于新版本来说,整体的性能上要差上不少;而新版本目前在社区不断地进行着版本的更迭,有些问题也会很快的得到修复,而且使用的人越来越多,是我们更加主流的选择;

ElasticSearch的下载地址为:https://www.elastic.co/cn/downloads/elasticsearch

​ 目前最新的版本为7.11.1,因为ElasticSearch的版本更迭过快,所以我不使用这么新的版本以免不稳定,所以我选用的还是6.8.6的版本的ElasticSearch;因为我的ES是部署在Linux系统上面的,我使用的Linux为CentOS8,所以这里只讲解Linux下的ES的安装,mac的朋友跟Linux的差不太多,Windows系统不常用,并且java项目一般不部署到Windows上,所以有需要的请麻烦自己找找相关文章;

2.2 下载与安装

因为我使用的已经在云服务器端在使用,所以我在本地利用虚拟机来进行演示,所以一些防火墙的设置可能跟云上有所区别,注意,ES很吃配置,尽量把配置给高一点

注意:ES是基于JAVA编写的,所以它的启动需要你有JDK1.8以上版本,Linux上面安装jdk就不再这里演示了

  1. 进入任意创建好的目录,如~/es
  2. 在当前目录下载ElasticSearch6.8.6,后面的网址就是下载页面对应MACOS/LINUX,右键复制链接地址
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.6.tar.gz

当然,ElasticSearch的服务器在国外,所以在国内直接下载有可能会非常慢,所以我提前在本地下载好了之后复制到了我的虚拟机上面

下载ES

  1. 解压并进入
tar -zxvf elasticsearch-6.8.6.tar.gz
cd elasticsearch-6.8.6/

解压ES

1. bin目录:存放ES启动脚本目录
2. config目录:存放ES配置文件目录
3. modules目录:模块陌路
4. lib目录:依赖的第三方库的目录
5. plugins目录:存放第三方插件的目录
  1. 启动ES,记得检查你的Java是否安装好了

ElasticSearch的启动命令为

ES_JAVA_OPTS="-Xms1024m -Xmx1024m" ./bin/elasticsearch
# 前面的是对JVM的设置,可以不要,只使用 ./bin/elasticsearch 命令即可

当你输入这个命令的时候你会发现ElasticSearch并没有如预期启动起来,反而报错了,这是因为ElasticSearch不运行在root用户下,所以这里就会启动失败

启动失败

  1. 更改权限
# 添加一个新的用户
useradd 用户名
# 添加用户密码
passwd 用户名

因为我的虚拟机上原本就有账户,所以就是如下图所示,当然密码输入的时候可能会因为过于简单而失败,这里要注意一下

新建用户

查看根目录,我的java和ElasticSearch都是安装在data0目录当中的,所以我可以直接将data0这个目录的权限转给我新的非root用户上面来就可以了,如果你不是的话,那可以分别转移权限或者移动到一起来;

文件目录

转移权限的命令为

chown -Rf xiren:xiren data0/

变更权限

变更完权限后请使用变更权限的账户登录虚拟机,并请注意java环境时候还能够使用

  1. 再次启动,进入到es的目录下面
ES_JAVA_OPTS="-Xms1024m -Xmx1024m" ./bin/elasticsearch

启动成功

当出现如上图所示,恭喜你,ES已经启动成功了!单实例安装便成功了!!

如果你的虚拟机安装的版本由界面化的化,我们可以通过127.0.0.1:9200的地址来访问ES,会出现如下界面

界面化访问

2.3 ElasticSearch配置

上面的步骤我们将一个ES安装并启动成功了,但是在使用之前我们还有一些配置要进行设置,因为ES这个软件本身的限定,如果不进行配置,ES将只能在本机使用,而不能够被外部访问到,这个是除了防火墙之外的ES软件本身的特点,所以我们需要配置一下,来设置外网访问

  1. 修改elasticsearch/config/elasticsearch.yml配置文件

配置目录

cd config/
vi elasticsearch.yml
# 往下翻翻,在对应位置添加下面两行
network.host: 0.0.0.0
http.port: 9200

修改配置

配置好了之后,就打开了ES对外的链接,但此时启动可能会出现问题,此时我们还需要进行一些配置

启动失败

  1. 使用root账户进行配置
vi /etc/security/limits.conf
# 在末尾添加以下内容(xiren 对应你创建的用户的用户名,为elasticsearch运行用户)
xiren soft nofile 65536
xiren hard nofile 131072
xiren soft nproc 4096
xiren hard nproc 4096

#然后
vi /etc/sysctl.conf
# 在末尾添加以下内容
vm.max_map_count=262144

#最后,重启虚拟机
reboot
2.4 打开防火墙,远程访问

root用户下输入以下代码,打开ES对应端口防火墙,然后使用ES运行账户运行ES即可

# 9100是Head插件端口
firewall-cmd --add-port=9100/tcp --permanent && firewall-cmd --add-port=9100/tcp
# 9200是查看端口(Http)
firewall-cmd --add-port=9200/tcp --permanent && firewall-cmd --add-port=9200/tcp
# 9300是后台使用端口(Tcp)
firewall-cmd --add-port=9300/tcp --permanent && firewall-cmd --add-port=9300/tcp

远程访问成功

2.5 设置ElasticSearch开机启动
cd /
cd data0/
mkdir cmd
cd cmd
touch startup.sh
vi startup.sh

#填入以下内容
#init
#start ES (解释以下,xiren为ES运行账户,然后执行,‘先到ES目录,然后启动’)
su - xiren -c 'cd /data0/elasticsearch/elasticsearch-6.8.6 && ES_JAVA_OPTS="-Xms1024m -Xmx1024m" ./bin/elasticsearch'

#保存之后
chmod a+x startup.sh
vi /etc/rc.local

#填入以下内容
# init startup.sh
/data0/cmd/startup.sh
#保存之后
chmod a+x /etc/rc.local

#然后重启之后便可以使用了
2.6 ElasticSearch插件安装
1.可视化工具elasticsearch-head

​ 因为使用Linux基本上都是命令行来操作,所以很少会用到这种可视化工具,Head插件主要是用来帮助我们解决界面问题,同时还可以实现基本信息的查看,发送REST请求和基本信息的模拟,这里我就提供一下安装的代码,有兴趣的可以自行安装

下载地址:https://github.com/mobz/elasticsearch-head

# 在安装前请保证你的虚拟机由nodejs环境
# 解压安装包到任意位置
unzip elasticsearch-head-master.zip
# 安装
npm install
# 运行
npm run start
# 配置es允许跨域访问
# 编辑elasticsearch/config/elasticsearch.yml在底部添加,就是0.0.0.0的位置
# 如果启用了HTTP端口,那么此属性会指定是否允许跨源REST请求
http.cors.enabled: true
# 如果http.cors.enabled的值为true,那么该属性会指定允许REST请求来自何处
http.cors.allow-origin: "*"

# 记得打开防火墙

我这边因为Linux不是可视化版本,所以我选择在本地电脑谷歌商城中去加载一个elasticsearch-head的插件来进行使用

谷歌商店插件地址:https://chrome.google.com/webstore/detail/elasticsearch-head/ffmkiejjmecolpfloofpjologoblkegm?hl=zh-CN

插件页面

加载好插件之后只需要打开插件,输入对应的地址即可,与我们正常的ES插件没有区别

elasticsearch-head插件

2.中文分词插件下载

中文分词插件,就是可以保证我们的搜索引擎可以识别中文的词组,更大程度的保证我们的使用

下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

注意一定要下载和Elasticsearch对应版本的才能用,然后上传到虚拟机对应位置新建ik目录

下载插件到指定目录

然后解压,重启即可

2.7 分布式安装

注意,虚拟机一定要由足够的内存和空间,来保证三个ES的运行,否则会卡顿甚至死机

  1. 主节点

这里的分布式安装集群将包含三个节点,一个master,两个slave,即一个指挥两个随从,为了方便,上面安装的单实例将作为master,然后进入对应目录,对配置进行相应的修改

cd 到你的es目录
vim config/elasticsearch.yml

# 在末尾添加如下配置:
# 配置整个集群的名字
cluster.name: (你要的名字)
# 配置master的名字
node.name: master
# 声明自己便是master
node.master: true

# 保存并退出,然后重启服务

有些教程会在这里去设置network.host: 127.0.0.1,这样子设置之后,你就只能在本机去访问了,无法再在外部电脑去连接ES,所以不是MACOS的不建议加上这条

修改完之后,再去Head上面去查看,就可以看到我们现在的master了

master

这时候你再去原生的9200端口访问就能看到你所设定的名字了,也就是上图连接按钮后面的那个英文;

  1. 子节点

在ES的平级目录中,新建立一个目录用来存放子节点,并将ES的压缩包复制一份;

子节点目录

这里的安装就和上边一样了,注意用户即可;因为有两个节点,所以我们把解压后的文件复制两份并重命名

tar -zxvf elasticsearch-6.8.6.tar.gz
cp -r elasticsearch-6.8.6 es_slave1
cp -r elasticsearch-6.8.6 es_slave2

然后按照上面的步骤去分别修改es_slave1,es_slave2的配置即可;

# 上面设置的集群名称
cluster.name: xiren
node.name: slave1

network.host: 0.0.0.0
# 避免端口冲突
http.port: 9201

discovery.zen.ping.unicast.hosts: ["0.0.0.0"]

添加slave1子节点

这时候,slave1便被添加进来了;上面的五角星代表master为指挥官;slave2的配置一样的就不再赘述了;
到此,ES的安装便告一段落了,至于它的使用,后面继续;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值