在日常的业务开发场景中,像 一个人有多套房子,多个住址 ,一篇文章中有多个评论这种需求还是非常常见的。当我们使用 Elasticsearch 来衡慧进行存储时, ES 的字段类型是 nested 类型 ,虽然这个效率不高。
当我们使用 canal 对数据进行增量同步到 ES 时,canal-adapter 是否是支持 nested 类型呢?
查看 issue 提问
好遗憾。大佬说暂时不支持。
在本想放弃的时候,看到 issue 中有位小伙伴说,配置 object 兼容 nested ,但是并没有给出解决方案。废话不多说,实践一把,走起。
1. 数据处理
1.1 创建 存在 字段类型为 nested 的索引 canal_test
首先创建 elasticsearch的索引名为 canal_test ,其中 addresses 字段是 nested 类型
创建 两张表 t_address(地址表),t_rk (人口表)。一个人可以有多个地址,一对多的关系
默认已经熟悉 canal 和 canal-adapter 的消败使用。在同步到 es 中,我们知道需要为每个索引配置一份 yml 的配置文件,下面咐桥答创建canal_test.yml 文件 ,同步配置如下
* 重点关注
配置中的关键
* 获取第 1 步中准备的sql,执行测试数据 sql
canal 执行日志
3. 同步结果
4. 搜索验证
查询结果:
好了 ,今天的实践就到这里。你学废了吗?
这边格式有点奇怪,有需要可以到公众号看
https://mp.weixin.qq.com/s/jIVxxHp9GsE2WL2DNPsVJQ
答案是:EF6AH理由是:页面大小为4096字节,4096等于2的12次方。故页内地址为12位。又逻辑地址长信握度为16位。滑败庆故高4位表示页号。则逻辑地址2F6AH在第2页。根据页表可知,第2页存于第14块中。14的十六进枯前制为EH,与低12位F6AH拼接得物理地址为EF6AH
你的那个参考答案确实错了啊
1)你为什么不能再困森getByMerchantId的时候把image也同时获取了呢。你现在这样做多麻码枯烦呀2)如果一定要这样做,那么参汪模亩考以下代码
(function(watchLength){
var current=0
displays.forEach(function (display) {
imageService.getByDisplayId(display.id).then((image)=>{
display.image = image
current++
if(current===watchLength){
res.send(displays)
}
})
})
}(displays.length))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)