ElasticSearch和Mysql的数据同步

前言

ES是一款开源的分布式搜索框架,它是一个存储数据、检索数据、分析数据的综合体。

es 和 mysql 之间的数据同步分 全量 和 增量。

binlog订阅

binlog 用于实时记录 mysql 数据产生的一些变化,然后通过 mysql 的主从复制协议,自己实现一个客户端和 mysql 的主节点进行连接,其实就是把自己伪装成一个 slave 节点,接下来主节点就会把数据变更事件发送给从节点。

在这里插入图片描述
把mysql一系列的数据更改事件收集到binlog的同步组件,然后交给下游的客户端去消费。

开源中间件logstash

logstash是一款数据收集及同步组件。它就像一个管道,一头连接数据源,一头连接ES。

logstash对mysql表的具体要求

  1. 要有id,es文档中的_id设置必须来自mysql表中的id字段,它提供了mysql和es文档和数据之间的映射关系;
  2. mysql表中要有一个标识记录的创建时间或更新时间的字段,logstash可以实现每次请求只获取上次轮询后更新或插入的记录,其实就是给它标识了一个max_time,最大时间,那下一次通过和这个最大时间的比较能够完成一个增量的同步。

在这里插入图片描述

logstash 对 mysql增量的配置

在这里插入图片描述
在这里插入图片描述

es和mysql数据同步增量sql优化可以解决的问题

下图的SQL可以解决 临界点数据没有被扫描到 及 避免老数据被重复扫描 的问题。
在这里插入图片描述

ES分词器插件–elasticSearch-analysis-ik

由于es内置的分词器对中文支持不太好,于是我们需要额外引入第三方分词器插件,比如 elasticSearch-analysis-ik。

下图是分词器插件对中文的分词效果:

在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值