其他
干货 | 携程Elasticsearch数据同步实践
作者简介
dot,携程技术经理,专注高并发、高性能领域。
一、背景
二、现状调研
List<Long> tagIds = articleTagDao.query("select tagId from article_tags where articleId=?", articleId);
List<TagPojo> tags =tagDao.query("select id, name from tags whereid in (?)");
ArticleInEs articleInEs = new ArticleInEs();
articleInEs.setTagIds(tagIds);
articleInEs.setTagNames(tags.stream().filter(tag-> tagIds.contains(tag.getId())).map(TagPojo::getName).collect(Collectors.toList()));
三、实现思路
3.1 根据索引方式
3.2 根据数据来源
3.3 根据模块
IndexExecutor,将数据通过Bulk方式提交数据到ES,从而更新ES索引;同时也要完成新索引的创建、索引状态的更新、别名切换等动作。
PersistExecutor,会把来自Query的数据,写入指定的数据库里的平表。这也能看出有平表的话,同步到ES已经很简单了。
四、小结
“携程技术”公众号
分享,交流,成长