使用 man ascii 来查看 ASCII 表。

从MySQL建立Elasticsearch索引-引言

本文始发于知乎Elasticsearch专栏:从MySQL建立Elasticsearch索引-引言

日常工作里,因业务需要大量使用了Elasticsearch。为了简化索引的开发工作,我们需要一个易用可扩展的MySQL到ES的同步框架,在比较了可以找到的各种开源框架&工具后,我们还是选择自行研发了一个,名字简单粗暴:es-common。

背景

16年我接手了并负责了部门所有业务的搜索系统,旧搜索系统是基于Lucene自研实现的一个搜索框架,包含了平表创建、全量索引、增量索引、搜索引擎四个部分基础功能的封装;另有一个管理系统,用于配置索引、字典等信息。框架的实现思路是通过建立平表,简化索引创建的过程。

接手该系统以后,各业务出现井喷式发展,各种需求铺天盖地,同时该系统的不稳定性也开始作妖,最早三个人的小团队每天都疲于奔命。解决现有问题的同时,也在查找更好的解决方案。于是Elasticsearch进入视野。 基于JSON的交互、分布式、数据与逻辑隔离、开箱即用、稳定等特性,使我们确定了向ES转型的计划。每个点都是现有系统没有解决的问题,具体的点就不吐槽了。

选择

我们的需求有:

  1. 支持全量、增量建立索引,以使数据变更较快体现
  2. 支持更新指定文档,以处理突发问题
  3. 索引有版本控制,以防止出现问题无法快速回滚
  4. 尽量减少代码开发,减少出错概率,更专注业务
  5. 简单的出错处理,失败检测等
  6. 支持插件化开发,提供额外数据
  7. 支持简单的规则,类似合并同主键数据
  8. 域名、AUTH不可见,以满足安全要求
  9. 支持非MySQL来源的数据,因为微服务的存在,不是所有数据都能从DB获取到

当时的调用结果已经找不到了,那么按照现在可以搜索到的框架和工具来重新做调研好了。简单搜索了一下MySQL到ES的同步框架或者工具,有以下几个:

这几个工具通过简单的配置,即可建立索引,但分析我们的需求,有以下需求无法满足:

  1. 需要提供DB的URL、User和Password等,我们公司由于安全的考虑,是无法拿到这些参数的;
  2. 有部分数据是通过微服务获取的,单纯的SQL是无法访问微服务的;
  3. 有的表数据量比较大,需要分片多JOB同时处理,JDBC在这点上操作比较麻烦;
  4. 增量是需要按照主键进行更新的,按照时间扫描对表压力比较大;
  5. 类似工具无法走常规发布,有一定的发布风险

基于以上原因,我们选择了自己研发了一个框架,用来满足我们的需求。下篇文章讲介绍es-common的实现思路。

继续阅读 »

本文始发于知乎Elasticsearch专栏:从MySQL建立Elasticsearch索引-引言

日常工作里,因业务需要大量使用了Elasticsearch。为了简化索引的开发工作,我们需要一个易用可扩展的MySQL到ES的同步框架,在比较了可以找到的各种开源框架&工具后,我们还是选择自行研发了一个,名字简单粗暴:es-common。

背景

16年我接手了并负责了部门所有业务的搜索系统,旧搜索系统是基于Lucene自研实现的一个搜索框架,包含了平表创建、全量索引、增量索引、搜索引擎四个部分基础功能的封装;另有一个管理系统,用于配置索引、字典等信息。框架的实现思路是通过建立平表,简化索引创建的过程。

接手该系统以后,各业务出现井喷式发展,各种需求铺天盖地,同时该系统的不稳定性也开始作妖,最早三个人的小团队每天都疲于奔命。解决现有问题的同时,也在查找更好的解决方案。于是Elasticsearch进入视野。 基于JSON的交互、分布式、数据与逻辑隔离、开箱即用、稳定等特性,使我们确定了向ES转型的计划。每个点都是现有系统没有解决的问题,具体的点就不吐槽了。

选择

我们的需求有:

  1. 支持全量、增量建立索引,以使数据变更较快体现
  2. 支持更新指定文档,以处理突发问题
  3. 索引有版本控制,以防止出现问题无法快速回滚
  4. 尽量减少代码开发,减少出错概率,更专注业务
  5. 简单的出错处理,失败检测等
  6. 支持插件化开发,提供额外数据
  7. 支持简单的规则,类似合并同主键数据
  8. 域名、AUTH不可见,以满足安全要求
  9. 支持非MySQL来源的数据,因为微服务的存在,不是所有数据都能从DB获取到

当时的调用结果已经找不到了,那么按照现在可以搜索到的框架和工具来重新做调研好了。简单搜索了一下MySQL到ES的同步框架或者工具,有以下几个:

这几个工具通过简单的配置,即可建立索引,但分析我们的需求,有以下需求无法满足:

  1. 需要提供DB的URL、User和Password等,我们公司由于安全的考虑,是无法拿到这些参数的;
  2. 有部分数据是通过微服务获取的,单纯的SQL是无法访问微服务的;
  3. 有的表数据量比较大,需要分片多JOB同时处理,JDBC在这点上操作比较麻烦;
  4. 增量是需要按照主键进行更新的,按照时间扫描对表压力比较大;
  5. 类似工具无法走常规发布,有一定的发布风险

基于以上原因,我们选择了自己研发了一个框架,用来满足我们的需求。下篇文章讲介绍es-common的实现思路。

收起阅读 »

社区日报 第671期 (2019-07-16)

1、ElasticSearch与NoSQL之差异比较。
http://tinyurl.com/y3h9qund
2、Pandora日志收集实战。
http://tinyurl.com/y6r9mobm
3、ElasticSearch冷热数据分离介绍。
http://tinyurl.com/y6phaw9m

编辑:叮咚光军

归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1、ElasticSearch与NoSQL之差异比较。
http://tinyurl.com/y3h9qund
2、Pandora日志收集实战。
http://tinyurl.com/y6r9mobm
3、ElasticSearch冷热数据分离介绍。
http://tinyurl.com/y6phaw9m

编辑:叮咚光军

归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

社区日报 第670期 (2019-07-15)

1、I-team 博客全文检索 Elasticsearch 实战
https://tinyurl.com/y3u8hels
2、ElasticSearch 多值类型的数据存储
https://tinyurl.com/y39jr2dg
3、ELK:kibana使用的lucene查询语法
https://tinyurl.com/y5uyagn4

编辑:cyberdak
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1、I-team 博客全文检索 Elasticsearch 实战
https://tinyurl.com/y3u8hels
2、ElasticSearch 多值类型的数据存储
https://tinyurl.com/y39jr2dg
3、ELK:kibana使用的lucene查询语法
https://tinyurl.com/y5uyagn4

编辑:cyberdak
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

社区日报 第669期 (2019-07-14)

1.一些Elasticsearch安全功能已经免费。
http://t.cn/AiWaXmUV
2.Logz.io将在Microsoft Azure上提供ELK-as-a-Service。
http://t.cn/AiWaKM32
3.(自备梯子)记录决策的简单而强大的工具。
http://t.cn/AiWaEFss

编辑:至尊宝
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1.一些Elasticsearch安全功能已经免费。
http://t.cn/AiWaXmUV
2.Logz.io将在Microsoft Azure上提供ELK-as-a-Service。
http://t.cn/AiWaKM32
3.(自备梯子)记录决策的简单而强大的工具。
http://t.cn/AiWaEFss

编辑:至尊宝
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

社区日报 第668期 (2019-07-13)

1、使用metricbeat监控linux raid;
http://tinyurl.com/y6lk5wgl
2、使用Elasticsearch进行智能搜索的机器学习
http://tinyurl.com/y3gtymnr
3、python和elasticsearch构建简易搜索
http://tinyurl.com/yxbfcbgo

编辑:wt
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1、使用metricbeat监控linux raid;
http://tinyurl.com/y6lk5wgl
2、使用Elasticsearch进行智能搜索的机器学习
http://tinyurl.com/y3gtymnr
3、python和elasticsearch构建简易搜索
http://tinyurl.com/yxbfcbgo

编辑:wt
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

社区日报 第667期 (2019-07-12)

1、Elasticsearch的高效嵌入向量相似打分插件
https://0x7.me/hUa9
2、DoorDash 的个性化搜索是如何实现的(自备梯子)
https://0x7.me/4kBH
3、ELK监控容器实现
https://0x7.me/VnKLT

编辑:铭毅天下
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1、Elasticsearch的高效嵌入向量相似打分插件
https://0x7.me/hUa9
2、DoorDash 的个性化搜索是如何实现的(自备梯子)
https://0x7.me/4kBH
3、ELK监控容器实现
https://0x7.me/VnKLT

编辑:铭毅天下
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

社区日报 第666期 (2019-07-11)

1.使用ES升级助手升级集群
http://t.cn/AiW70bC0
2.基于k8s运行elasticsearch
http://t.cn/Ei8iZeq
3.ES的深度翻页怎么处理
http://t.cn/AiW70bCC

编辑:金桥
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1.使用ES升级助手升级集群
http://t.cn/AiW70bC0
2.基于k8s运行elasticsearch
http://t.cn/Ei8iZeq
3.ES的深度翻页怎么处理
http://t.cn/AiW70bCC

编辑:金桥
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

社区日报 第665期 (2019-07-10)

1、使用 ELK 搭建日志集中分析平台实践
http://t.cn/AiOeJyUb
2、ELK 架构下利用 Kafka Group 实现 Logstash 的高可用
http://t.cn/AiOeJJQ9
3、傻瓜也能玩转日志归集
http://t.cn/AiOeJCoN
 
编辑:江水
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1、使用 ELK 搭建日志集中分析平台实践
http://t.cn/AiOeJyUb
2、ELK 架构下利用 Kafka Group 实现 Logstash 的高可用
http://t.cn/AiOeJJQ9
3、傻瓜也能玩转日志归集
http://t.cn/AiOeJCoN
 
编辑:江水
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

社区日报 第664期 (2019-07-09)

1、Elasticsearch存储深入详解。
https://0x7.me/foim
2、大流量下的 ElasticSearch 搜索演进。
https://0x7.me/4zlZc
3、Elasticsearch准实时原理。
https://0x7.me/eUwlx

编辑:叮咚光军

归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1、Elasticsearch存储深入详解。
https://0x7.me/foim
2、大流量下的 ElasticSearch 搜索演进。
https://0x7.me/4zlZc
3、Elasticsearch准实时原理。
https://0x7.me/eUwlx

编辑:叮咚光军

归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

社区日报 第663期 (2019-07-08)

1.担心 elasticsearch 使用SSD寿命出问题?来看ssd寿命评测缓解你的后顾之忧吧
http://t.cn/E7qr1Pj

2.ElasticSearch6实践汇总
http://t.cn/AiOaK6VO

3.Elasticsearch 中文 PhraseQuery 无法精确匹配问题分析
http://t.cn/AiOaCfAC

编辑:cyberdak
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1.担心 elasticsearch 使用SSD寿命出问题?来看ssd寿命评测缓解你的后顾之忧吧
http://t.cn/E7qr1Pj

2.ElasticSearch6实践汇总
http://t.cn/AiOaK6VO

3.Elasticsearch 中文 PhraseQuery 无法精确匹配问题分析
http://t.cn/AiOaCfAC

编辑:cyberdak
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

社区日报 第662期 (2019-07-07)

1.用于Elasticsearch的Open Distro发布v1.0。
http://t.cn/AiOJnnDY
2.(自备梯子)Elasticsearch suggestions。
http://t.cn/AiOJtnrX
3.(自备梯子)智能手机正在变得很古怪。
http://t.cn/AiOJIqK5

编辑:至尊宝
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1.用于Elasticsearch的Open Distro发布v1.0。
http://t.cn/AiOJnnDY
2.(自备梯子)Elasticsearch suggestions。
http://t.cn/AiOJtnrX
3.(自备梯子)智能手机正在变得很古怪。
http://t.cn/AiOJIqK5

编辑:至尊宝
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

Elastic日报 第661期 (2019-07-06)

1.利用logstash同步关系型数据库和es https://0x7.me/R4OFV

2.针对英语和俄语的词形分析插件 https://0x7.me/9S0J

3.一周热点:GitHub上的那些奇葩项目 https://0x7.me/8B5T

继续阅读 »

1.利用logstash同步关系型数据库和es https://0x7.me/R4OFV

2.针对英语和俄语的词形分析插件 https://0x7.me/9S0J

3.一周热点:GitHub上的那些奇葩项目 https://0x7.me/8B5T

收起阅读 »

社区日报 第660期 (2019-07-05)

1、Beats和Logstash实战日志分析
https://0x7.me/xLkY
2、Elastic公司面试Tips(梯子)
https://0x7.me/4hxPE
3、Elasticsearch 集群和索引健康状态及常见错误说明
https://0x7.me/Hz8p

编辑:铭毅天下
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1、Beats和Logstash实战日志分析
https://0x7.me/xLkY
2、Elastic公司面试Tips(梯子)
https://0x7.me/4hxPE
3、Elasticsearch 集群和索引健康状态及常见错误说明
https://0x7.me/Hz8p

编辑:铭毅天下
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

社区日报 第659期 (2019-07-04)

1.Elastic支持纳秒时间戳的历程
https://www.elastic.co/blog/jo ... earch
2.使用Elasticsearch Operator快速部署Elasticsearch集群
http://t.cn/Ai0DcQPd
3.Lucene8索引及文件格式的基本概念
http://t.cn/Ai0DcQPr

编辑:金桥
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1.Elastic支持纳秒时间戳的历程
https://www.elastic.co/blog/jo ... earch
2.使用Elasticsearch Operator快速部署Elasticsearch集群
http://t.cn/Ai0DcQPd
3.Lucene8索引及文件格式的基本概念
http://t.cn/Ai0DcQPr

编辑:金桥
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

社区日报 第658期 (2019-07-03)

1.利用 ELK 搭建 Docker 容器化应用日志中心
http://dwz.win/ddz
2.Uber 大数据平台的演进
http://dwz.win/ddB
3.如何做一次Elasticsearch技术分享
http://dwz.win/dd6
 
编辑:江水
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1.利用 ELK 搭建 Docker 容器化应用日志中心
http://dwz.win/ddz
2.Uber 大数据平台的演进
http://dwz.win/ddB
3.如何做一次Elasticsearch技术分享
http://dwz.win/dd6
 
编辑:江水
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »