同步mysql数据到ElasticSearch的最佳实践

news/2024/10/5 17:24:56

同步mysql数据到ElasticSearch的最佳实践| Id | Title | DateAdded | SourceUrl | PostType | Body | BlogId | Description | DateUpdated | IsMarkdown | EntryName | CreatedTime | IsActive | AutoDesc | AccessPermission |

| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------|
| 15863519| 同步mysql数据到ElasticSearch的最佳实践| 2022-02-04T22:02:00| | BlogPost|

Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

安装es以及head插件,略。

为了使海量数据能够提供实时快速的查询,mysql很显然力不从心,于是我们需要利用es提供大数据搜索服务,典型的场景就是:产品或者商品搜索。

首先是数据同步,将mysql数据同步到es的方式很多,经过测试,稳定且易用的是 logstash-input-jdbc

如何安装logstash-input-jdbc插件?

参考:http://blog.csdn.net/yeyuma/article/details/50240595#quote 

全量同步与增量同步

全量同步是指全部将数据同步到es,通常是刚建立es,第一次同步时使用。增量同步是指将后续的更新、插入记录同步到es。(删除记录没有办法同步,只能两边执行自己的删除命令)
根据公司内部实践,logstash-input-jdbc增量同步的原理很简单。我们做增量同步是需要知道插入和更新记录的,因此,进入ES提供搜索服务的表(要同步的标),都要加上update_time,每次插入和更新的时候更新这个字段,让logstash-input-jdbc知道即可。
详见:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html#_predefined_parameters

关键点:
where t.update_time > :sql_last_value

测试结果:

先更新一条数据看看

然后在es中查询看看有没有更新到

成功,自动同步了!

如果需要同时同步多个表,那么需要以下配置

复制代码
复制代码
input {jdbc {jdbc_driver_library => "/Users/logstash/mysql-connector-java-5.1.39-bin.jar"jdbc_driver_class => "com.mysql.jdbc.Driver"jdbc_connection_string => "jdbc:mysql://localhost:3306/database_name"jdbc_user => "root"jdbc_password => "password"schedule => "* * * * *"statement => "select * from table1"type => "table1"}jdbc {jdbc_driver_library => "/Users/logstash/mysql-connector-java-5.1.39-bin.jar"jdbc_driver_class => "com.mysql.jdbc.Driver"jdbc_connection_string => "jdbc:mysql://localhost:3306/database_name"jdbc_user => "root"jdbc_password => "password"schedule => "* * * * *"statement => "select * from table2"type => "table2"}# add more jdbc inputs to suit your needs 
}
output {elasticsearch {index => "testdb"document_type => "%{type}"   # <- use the type from each inputhosts => "localhost:9200"}
}
复制代码
复制代码

 

| 648658| | 2024-04-29T21:16:00| false| | 2022-02-04T22:01:58.117| true| Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Ap| Anonymous|

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/43189.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

开源无代码 / 低代码平台 NocoBase 1.0.1-alpha.1: 区块支持高度设置

NocoBase 是一个极易扩展的开源无代码开发平台。完全掌控,无限扩展,助力你的开发团队快速响应变化,显著降低成本,不必投入几年时间和数百万资金研发,只需要花几分钟部署 NocoBase。 NocoBase 中文官网 官方文档 在线 Demo 新特性 区块支持高度设置(#4441)参考文档:区块…

Apifox安装使用

下载双击安装登录后,查看本地Mock快捷请求测试复制url到浏览器测试

机器学习实践——支持向量机

一.什么是支持向量机 支持向量机(SVM)是一种广泛使用的监督学习方法,主要用于分类和回归分析。它的基本原理是找到一个超平面(在二维空间中是一条直线),以最大化不同类别之间的边界。以下是SVM的关键概念:超平面:决策边界,用于分类的直线或平面。边界(Margin):从超…

软件工程-五 过程

软件工程-五 过程 做过程不是做工程 软件工程这个概念被提出的时候大概是在20个世纪60年代末。它作为成熟的概念的标志是软件工程的瀑布模型的提出。 瀑布模型将软件开发的过程分成需求、分析、设计、开发和测试五个主要阶段,其主要环节关系表现为如下的这样一种形态在瀑布模…

centos tream 9安装dingding

https://github.com/zhullyb/dingtalk-for-fedora/blob/master/README_zh.md 用deb包转成rpm,然后用dnf安装rpm即可 dingtalk-for-fedora提供了如何转化,需要了解rpmrebuild如何使用

redis自学(46)键值设计

Redis键值设计 优雅的key结构 Redis的Key虽然可以自定义,到但是最好遵循下面的几个最佳实践约定: l 遵循基本格式:[业务名称]:[数据名]:[id] l 长度不超过44字节(长度越小,占用的内存越少) l 不包含特殊字符优点: ① 可读性强 ② 避免key冲突 ③ 方便管理 ④ 更节省…

windows计划任务的“等待空闲时间”已弃用

想使用windows的计划任务来实现:当计算机空闲时,自动关机,避免资源浪费。 方案一: 测试了过多个软件,如shutter,WinOFFSetup,虽然功能多,但这些软件只能在用户登录时运行。而windows 11一段时间后会自动注销,查了多种设置方法没有解决。 方案二: 用AI写了检测用户空闲…

AML HW3

高级机器学习 HW31. 完成 value_iteration 函数, 实现值迭代算法 根据 Bellman 最优方程,我们可以得到如下的公式: \[V^*(s) = \max_a \sum_{s} T(s, a, s) [R(s, a, s) + \gamma V^*(s)] = \max_a Q^*(s, a) \]可以将其写成迭代更新的方式 \[V_{k+1}(s) = \max_a \sum_{s} T…