有没有 elasticsearch 全量索引和增量索引的方案呢?

2020-07-29 12:12:55 +08:00
 lxbu

1.业务方本身系统的故障,出现大量数据的丢失 2.业务高速发展产生增减字段或者修改分词算法等相关的需求 3.业务冷启动会有一次性导入大批量数据的需求

以上情况需要全量索引,我看网上大多数是说通过别名的方式来重建,是不是只能这一种方案呢?

增量索引可以通过 canal 监听 binlog 日志来完成增量索引,如果全量索引的时候怎么暂停增量索引呢?

4055 次点击
所在节点    Elasticsearch
12 条回复
ty89
2020-07-29 12:19:55 +08:00
你的问题到底是什么
lxbu
2020-07-29 12:30:27 +08:00
@ty89 #1 就是有哪些全量索引的方案
tairan2006
2020-07-29 12:43:59 +08:00
全量和增量并不矛盾…你加个 update_time 时间戳,更新的时候如果时间戳更大才更新,否则不用更新…
lxbu
2020-07-29 12:45:13 +08:00
刚接触 elasticsearch,可能问的问题有点表述不清,大致就是如果 db 和 es 的数据不一致了,我需要全量索引一次,是不是通过别名的方式来完成此次操作
lxbu
2020-07-29 12:49:29 +08:00
@tairan2006 #3 好的,明白了,那如果 db 和 es 数据不一致了,怎么处理呢
lovedebug
2020-07-29 12:50:48 +08:00
1. 增字段可以,减字段就不合适了
2. 设置冷热节点
3. 按月或周建 index,这样可以通过代码切割新旧索引或者 reindex 旧索引
tairan2006
2020-07-29 12:54:22 +08:00
@lxbu 理论上你放 kafka 里消费,数据不可能最终不一致…
当然如果数据量不是很大,你可以每天夜里周期性把 update_time>昨天 0 点的数据灌进去覆盖掉,虽然这个方法比较粗暴…
Jackeriss
2020-07-29 12:54:25 +08:00
读的时候用别名,写的时候用真名,这样随便你怎么 reindex 都没问题
lxbu
2020-07-29 13:36:02 +08:00
@lovedebug #6 好的,明白了,谢谢
lxbu
2020-07-29 13:36:58 +08:00
@Jackeriss #8 明白了
hubqin
2020-07-29 14:26:26 +08:00
引自: https://elasticsearch.cn/question/609
有几种方法,看着选吧:
1.在业务系统里做双写

2.用 elasticsearch-jdbc 之类的工具来做全量和增量同步

3.用阿里的 canal 来做数据库 binlog->kafka->es 的同步,需要开发,而且依赖比较多,小公司选择还是慎重些吧
lxbu
2020-07-29 15:17:53 +08:00
@hubqin #11 好的,感谢,本来想用第三种方式的,我再慎重考虑下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/693997

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX