1
在簡單策略模式下,jdbc river插件會在添加新行時更新索引,但是如果字段值中存在更改,它會更新現有行嗎?我注意到在數據庫中沒有任何時間戳字段的映射,所以我認爲它沒有。elasticsearch jdbc river插件是否會跟蹤對mysql中現有行的更改?
在簡單策略模式下,jdbc river插件會在添加新行時更新索引,但是如果字段值中存在更改,它會更新現有行嗎?我注意到在數據庫中沒有任何時間戳字段的映射,所以我認爲它沒有。elasticsearch jdbc river插件是否會跟蹤對mysql中現有行的更改?
通過使用$river.state.last_active_begin
,您可以在查詢中使用時間戳,如下例所示。這將獲取自上次運行以來添加的產品行。
{
"type": "jdbc",
"jdbc": {
"url": "jdbc:mysql://localhost:3306/test",
"user": "",
"password": "",
"sql": [
{
"statement": "select * from \"products\" where \"mytimestamp\" > ?",
"parameter": [
"$river.state.last_active_begin"
]
}
],
"index": "my_jdbc_river_index",
"type": "my_jdbc_river_type"
}
}
它更新文件或覆蓋它們,取決於版本。 – shyos
關於jdbc河流處理的其他最近的答案中的一些很好的信息[其他答案/問題在這裏](http://stackoverflow.com/questions/21260086/elasticsearch-river-jdbc-mysql-not-deleting-records) – mconlin
是,謝謝,我明白現在它是如何工作的。基本上,它再次重新執行查詢並基於增量,如果需要,再次用新版本更新文檔。 – dickyj