目前,很多业务中的对象都拥有复杂的数据结构,例如包含日期、气象信息、地理地图信息、对象或数组等。假设您的数据结构如下:
{
"took" : 21,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 6,
"max_score" : 1.3968885,
"hits" : [
{
"_index" : "product_info",
"_type" : "products",
"_id" : "WLvWYXAB8Rql5AUxLqUU",
"_score" : 1.3968885,
"_source" : {
"productName" : "productName1",
"annual_rate" : "3.1100%",
"describe" : "xxxxxxxx"
}
},
{
..............................
},
{
..............................
},
{
..............................
}
}
]
}
}
如果以上数据存储到MySQL中,那就需要将一个完整的对象拆分成一行一列形成一张或多张表进行存储。这样不仅耗时耗力,而且查询的时候又要将其重组,导致查询延迟。但是使用Elasticsearch,您可以存储整个对象(文档),如下。
Elasticsearch是一款非常强大的搜索引擎,可以让你在海量的数据中快速找到想要的内容。例如,代码搜索:可以帮助您找到相应的代码仓库,还可以实现代码级的搜索及高亮显示;网上shopping:可以帮助您推荐商品。
除了大数据搜索,Elasticsearch结合Logstash和Beats,还被广泛应用在大数据实时分析领域,例如日志分析、指标监控、信息安全等。帮助您探索海量的结构化和非结构化的数据,按需创建可视化报表、对监控数据设置报警阈值,甚至使用机器学习技术,自动识别异常状况、及时发出警报。
MySQL与Elasticsearch数据结构的对应关系可参见基本概念。
本文以阿里云Elasticsearch为例,为您提供将MySQL数据迁移至Elasticsearch中的全套解决方案。
阿里云Elasticsearch兼容开源Elasticsearch的功能,以及Security、Machine Learning、Graph、APM等商业功能,致力于数据分析、数据搜索等场景服务。支持5.5.3、6.3.2、6.7.0、6.8.0和7.4.0等版本,并提供了商业插件X-Pack服务。在开源Elasticsearch的基础上提供企业级权限管控、安全监控告警、自动报表生成等功能。阿里云Elasticsearch为您提供1个月的免费试用活动,单击此处即可免费试用。
MySQL数据同步至Elasticsearch
同步方案 | 原理说明 | 适用场景 | 使用限制 | 相关文档 |
---|---|---|---|---|
DTS(实时同步) | DTS采用binlog方式实现数据同步, 在不影响源数据库的情况下, 同步延迟可降至毫秒级别。 | 对数据同步的实时性要求较高的场景。 |
| 通过DTS将MySQL数据实时同步到阿里云ES |
Logstash JDBC | 通过logstash-input-jdbc插件实现Logstash批量查询RDS中的数据, 并将数据迁移到ES。实现的本质是 该插件会定期对RDS中的数据进行循环轮询, 从而在当前循环中找到上次插入或更改的记录, 然后批量查询这些记录并迁移至ES。 与DTS同步方案相比,该方案的实时性较差,存在秒级延迟。 |
|
| 通过阿里云Logstash将RDS MySQL数据同步至阿里云ES |
DataWorks(离线数据同步) | DataWorks是一款提供数据集成、数据开发及数据质量 等全方位的产品服务。支持引入并存储关系型数据,然后进行转化和开发, 最后将处理后的数据同步到ES或其他数据系统。 |
|
| 通过DataWorks将MySQL数据同步到阿里云ES |
Canal(自建MySQL同步) | 通过binlog方式实现数据实时同步及订阅。 | 使用自建MySQL,且对数据同步的实时性要求较高的场景。 |
| 通过Canal将MySQL数据同步到阿里云ES |