我已使用弹性jdbc河流插件连接到数据库,并且elasticsearch已成功编入索引。如果我改变现有字段的值,它会反映在索引中吗?例如,我有一个名为disabled的列,它可能有'y'或'n',并且在开头它有'y'并被索引。如果我稍后将其更改为'n',它会在索引和缓存中反映出来吗?
我已经将河流配置为每5分钟一次。如果是这样,它如何检测更新而不是新插入?
答案 0 :(得分:0)
这取决于您从SQL数据库中提取的查询。如果你正在做一般事情"从my_table"中选择*然后您将每5分钟获得一次更新,但这些更新实际上可能会在Elasticsearch中创建新项目。它是创建新的还是覆盖旧的取决于映射的东西,你可以在SQL存储中用作id作为" _id"柱。因此,要始终更新elasticsearch数据,查询将变为"选择my_id_field为_id,*来自my_table"
基本上,河流并没有检测到之前有什么,现在有什么。它只是将您的查询并将其放入elasticsearch(它没有内存),如果您不给它一个,它将分配一个_id字段。
您可以通过制作es_track表并仅执行增量更新(通常基于时间)来为其提供一个。缺点是它可能还需要架构更改,因为您需要一个" updated_at"您要从中拉出的表格中的字段类型。