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