使用logstash和RabbitMQ增量同步数据库数据到Elasticsearch

本文介绍了如何结合logstash、RabbitMQ和Elasticsearch实现数据库数据的增量同步。首先,文章讲解了如何配置Elasticsearch索引来忽略大小写,并使用IK Analyzer进行分词。接着,通过logstash进行首次全量同步,然后利用RabbitMQ作为消息队列,在商品数据变更时发送到MQ,由消费者同步到Elasticsearch,以此达到增量同步的目的。这种方法在高并发场景下能有效降低服务器负载。
摘要由CSDN通过智能技术生成

最近在写一个电商项目,在项目中用到了Elasticsearch 6.3.0做搜索商品相关的功能,其中使用了ES插件logstash做数据同步。但是网上大部分都写的是使用logstash做全量同步,用sql将需要查询的数据查出来之后全量同步至ES中,可以设置定时同步任务,但是这种同步方式比较耗性能,网上还有介绍使用logstash做增量同步的,基本上是记录上次同步时间或者最后一条数据的id,然后下次同步时,只需将大于最后一条id的数据同步到ES即可,但这种方式存在一个缺陷——就是之前同步过的数据如果发生了修改便不能在增量同步中发生修改操作。

       于是寻找适合自己的同步方式,项目有用到另一个工具——RabbitMQ,熟悉这个组件的朋友也许知道这是做消息队列的,我们项目使用此组件做即时通讯的消息异步发送并保存消息至数据库,还有订单的一些延时操作,如:订单定时取消,订单定时好评,商品定时上传之类的,在这里做商品数据的同步也是看中其异步操作性能,下面详细介绍我在项目中使用logstash和RabbitMQ做数据同步的一些流程。

      elasticsearch如果要忽略大小写的话,需要在创建索引的时候设置所有的字母都转为小写,如:

"settings": {
        "index": {
            "number_of_shards": "5",
            "number_of_replicas": "1"
        },
        "analysis": {
            "analyzer": {
                "caseSensitive": {
                    "filter": ["lowercase", "asciifolding"],
                    "type": "custom",
                    "tokenizer": "keyword"
                }
            }
    

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值