即使是不成熟的尝试,也胜于胎死腹中的策略。

求复杂业务下数据导入elasticsearch的解决方案

Elasticsearch | 作者 F91 | 发布于2017年06月23日 | 阅读数:2064

先说明一下现有的业务。
使用的数据库:SQL Server 2008 R2
数据库有几百万的数据,这些数据每天都是要批量增加的,批量导入数据的同时会发生某些数据被合并掉了,某些数据被删除了,而且都是放在存储过程里操作的。之所以放在存储过程里操作,是因为单条操作速度太慢,所以后来改为了使用存储过程来进行数据的批量操作。
之前查询数据是用SQL语句直接查询数据库的,现在打算使用elasticsearch来进行数据查询,那么现在问题是查询好查,数据难进。
大家来讨论下对于这种操作都在数据库批量操作的(批量过程包括增、删、改),该如何将数据导入到es中?难道就只能在代码层面实现SQL存储过程里的业务操作吗?
已邀请:

bingyuf2012

赞同来自:

SQL Server 有没有像 阿里的canal 能够监控 MySQL 数据库的binlog 这样的组件?
 
可以将变化的数据或者数据库批量操作的数据异步发送到队列里,异步消费队列数据更新 ES。

laoyang360 - [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自:

查下logstash插件logstash-input-jdbc支持不,我已经验证mysql,oracle支持的

rockybean - Elastic Certified Engineer, ElasticStack Fans,公众号:ElasticTalk

赞同来自:

mysql binlog 的逻辑是订阅数据库修改,基本可以做到实时。你这个问题还是比较尴尬的,sql server不是很熟,如果没有binglog的方式,似乎只能在代码里面整合了。
你这里对于实时性要求是怎样的?如果不高的话,可以定时整库导一遍,再加上alias切换。另外为什么要引入elasticsearch呢?有什么是sql server解决不了的吗?

Xargin

赞同来自:

如果实在不好做就做双写吧(逃
 
双写会有麻烦的数据一致性问题,不是迫不得已不要用

wengqiankun - es新手

赞同来自:

表增加一个updateTime字段,定时捞时间范围内的updatetime数据做es更新 可行么

要回复问题请先登录注册