环境信息
canal version mysql version
问题描述
canal-adapter的配置如下, es的id采用自生成的策略
dataSourceKey: defaultDS destination: example groupId: g1 esMapping: _index: index _type: user upsert: false pk: c_id sql: "select a.id as c_id, a.name as name from user a" commitBatch: 3000
mysql的数据delete的时候, 会将原来的数据的字段update为null,但是不会delete掉
public void delete(ESMapping mapping, Object pkVal, Map<String, Object> esFieldData) { if (mapping.get_id() != null) { getBulk().add(transportClient.prepareDelete(mapping.get_index(), mapping.get_type(), pkVal.toString())); commitBulk(); } else { SearchResponse response = transportClient.prepareSearch(mapping.get_index()) .setTypes(mapping.get_type()) .setQuery(QueryBuilders.termQuery(mapping.getPk(), pkVal)) .setSize(10000) .get(); for (SearchHit hit : response.getHits()) { // 这里执行的是update,而不是delete getBulk().add(transportClient.prepareUpdate(mapping.get_index(), mapping.get_type(), hit.getId()).setDoc(esFieldData)); commitBulk(); } }
}
原提问者GitHub用户
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。