1.业务方本身系统的故障,出现大量数据的丢失 2.业务高速发展产生增减字段或者修改分词算法等相关的需求 3.业务冷启动会有一次性导入大批量数据的需求
以上情况需要全量索引,我看网上大多数是说通过别名的方式来重建,是不是只能这一种方案呢?
增量索引可以通过 canal 监听 binlog 日志来完成增量索引,如果全量索引的时候怎么暂停增量索引呢?
1
ty89 2020-07-29 12:19:55 +08:00
你的问题到底是什么
|
3
tairan2006 2020-07-29 12:43:59 +08:00 via Android
全量和增量并不矛盾…你加个 update_time 时间戳,更新的时候如果时间戳更大才更新,否则不用更新…
|
4
lxbu OP 刚接触 elasticsearch,可能问的问题有点表述不清,大致就是如果 db 和 es 的数据不一致了,我需要全量索引一次,是不是通过别名的方式来完成此次操作
|
5
lxbu OP @tairan2006 #3 好的,明白了,那如果 db 和 es 数据不一致了,怎么处理呢
|
6
lovedebug 2020-07-29 12:50:48 +08:00
1. 增字段可以,减字段就不合适了
2. 设置冷热节点 3. 按月或周建 index,这样可以通过代码切割新旧索引或者 reindex 旧索引 |
7
tairan2006 2020-07-29 12:54:22 +08:00 via Android
@lxbu 理论上你放 kafka 里消费,数据不可能最终不一致…
当然如果数据量不是很大,你可以每天夜里周期性把 update_time>昨天 0 点的数据灌进去覆盖掉,虽然这个方法比较粗暴… |
8
Jackeriss 2020-07-29 12:54:25 +08:00 via iPhone
读的时候用别名,写的时候用真名,这样随便你怎么 reindex 都没问题
|
11
hubqin 2020-07-29 14:26:26 +08:00
引自: https://elasticsearch.cn/question/609
有几种方法,看着选吧: 1.在业务系统里做双写 2.用 elasticsearch-jdbc 之类的工具来做全量和增量同步 3.用阿里的 canal 来做数据库 binlog->kafka->es 的同步,需要开发,而且依赖比较多,小公司选择还是慎重些吧 |