ElasticSearch服务集群搭建以及应用(三)

接 ElasticSearch服务集群搭建以及应用(二)

一:ES集群的搭建

        ES通常以集群方式工作,这样做不仅能够提高 ES的搜索能力还可以处理大数据搜索的能力,同时也增加了系统的容错能力及高可用。
1.集群的一些概念
    (1)、结点
        ES集群由多个服务器组成,每个服务器即为一个Node结点(该服务只部署了一个ES进程)。
    (2)、分片
        片是存储在不同的节点上,当我们的文档量很大时,由于内存和硬盘的限制,同时也为了提高ES的处理能力、容错能力及高可用能力,我们将索引分成若干分片,每个分片可以放在不同的服务器,这样就实现了多个服务器共同对外提供索引及搜索服务。一个搜索请求过来,会分别从各各分片去查询,最后将查询到的数据合并返回给用户。
    (3)、副本
        为了提高ES的高可用同时也为了提高搜索的吞吐量,我们将分片复制一份或多份存储在其它的服务器,这样即使当前的服务器挂掉了,拥有副本的服务器照常可以提供服务。
    (4)、主结点
        一个集群中会有一个或多个主结点,主结点的作用是集群管理,比如增加节点,移除节点等,主结点挂掉后ES会重新选一个主结点。
    (5)、结点转发
        每个结点都知道其它结点的信息,我们可以对任意一个结点发起请求,接收请求的结点会转发给其它结点查询数据。
在这里插入图片描述
2.节点的三个角色
    主节点
:master节点主要用于集群的管理及索引 , 比如新增节点 , 分片分配 , 索引的新增和删除等.
    数据节点 :data节点保存数据分片,负责索引和搜索操作
    客户端节点 : client节点作为请求客户端存在 , client的作用也作为负载均衡器 , client节点不存数据 , 只将请求均衡的转发到其他节点

3.ES集群配置
    (1)解压3个elasticsearch文件,三个文件夹依次命名为elasticsearch-6.2.1,elasticsearch-6.2.1-bak1,elasticsearch-6.2.1-bak2,三个配置文件elasticsearch.yml依次配置为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:这里如果是把elasticsearch-6.2.1直接复制3份在进行配置,那么一定要记得将data文件夹里面的索引数据删除,不然会出现failed to send join request to master,从节点的2个服务连不上主节点

    (2)ik分词器的配置参考elasticsearch-6.2.1里面的配置
    (3)分别启动三个ES服务,在head页面上,新建索引,副本数为节点数减1在这里插入图片描述
在这里插入图片描述

二:logstash的安装及使用

        采用Logstash实现,Logstash版本和ES版本保持一致,会从MySQL中将数据采集到ES索引库。当数据库数据被删除,需要手动写程序删除索引库数据
1.下载Logstash,解压
2.安装logstash-input-jdbc插件
        这个插件的作用就是负责从mysql中采集数据,此插件是ruby语言开发的,需要安装ruby,logstash5.x以上版本本身自带有logstash-input-jdbc,6.x版本本身不带logstash-input-jdbc插件,需要手动安装
在这里插入图片描述
        安装成功后我们可以在logstash根目录下的以下目录查看对应的插件版本
在这里插入图片描述
3.logstash使用的2个重要的配置文件
    (1)在logstash的config目录下配置mysql.conf文件供logstash使用,logstash会根据mysql.conf文件的配置的地址从MySQL中读取数据向ES中写入索引。 设置如下:
在这里插入图片描述
    根据配置文件mysql.conf中每隔一分钟扫描,一旦发现update_time大于logstash_metadata文件中的时间,就会把符合条件的数据重新导入到索引库,实现了更新
    (2)logstash的工作是从MySQL中读取数据,向ES中创建索引,这里需要提前创建mapping的模板文件以便logstash 使用。 在logstash的config目录创建es_course_template.json,内容如下:

{
   "mappings" : {
      "es_course" : {
          "properties" : {
            "course_name" : {
               "analyzer" : "ik_max_word",
			   "search_analyzer":"ik_smart",
               "type" : "text"
            },
            "course_description" : {
               "analyzer" : "ik_max_word",
			   "search_analyzer":"ik_smart",
               "type" : "text"
            },
            "id" : {
               "type" : "keyword"
            },
            "course_pic" : {
               "index" : false,
               "type" : "keyword"
            }
         }
      }
   },

   "template" : "es_course"
}

3.logstash从mysql导数据到ES的测试
    (1)建表数据如下
在这里插入图片描述
    (2)使用head新建单机索引es_course,并使用postman添加映射关系
在这里插入图片描述
    (3)在logstash的bin目录下,启动logstash
            logstash.bat ‐f …/config/mysql.conf
    (4)启动成功之后,会看到mysql数据库数据被导入到ES,如下
在这里插入图片描述
在这里插入图片描述
    (5)注意:我们在导入成功之后,如果是测试,修改了数据或者删除了索引库准备重新导入,一定有2个步骤不能忘记
        1.删除es服务下的data目录的原有索引数据
        2.修改logstash/config/logstash_metadata文件里面的最后修改时间,不然会导致因为时间原因不能导入进去

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值