elasticsearch使用river-jdbc导入数据库数据时怎么设置让其实时更新

{
type: jdbc
jdbc: {
url: jdbc:oracle:thin:@host:1521/orcl
user: test
password: test
sql: select id as _id,name from test
}
index:{
index:test,
type:test
}
}我现在数据能导入可是如果数据库这边数据发生变化怎么让es这边同步,网上查的说要在数据表上添加时间戳字段可是如果每张表都要加工作量太大了,有没有别的什么方法?

 
已邀请:

Xargin

赞同来自: liunique tianzhaixing

@liunique:我来回答一下好了
楼主大概没有认真阅读es-jdbc的文档
用这个工具的时候需要select的时候显式指定 as  _id,es会使用这个id作为唯一键去覆盖掉对应的文档
如果不这么写的话,那每次拿到的数据都会去创建新条目的

medcl - Elasticsearch老司机

赞同来自: liunique

这个插件类似pull机制,你数据更新了需要sql有办法查得到才行,或者试试其它基于binlog的方案

MrLee - 测试开发

赞同来自: liunique

弱弱问一句,river_jdbc 是什么 plugin ,我咋只用过 jdbc。
jdbc 的话是无法做到真正的实时的,只有配置 schedule 让它不断执行,并且可以指定一个 tracking_column 来每次只导入新增的条目。

tianzhaixing - 80后IT男

赞同来自:

我目前也在处理这方面的问题,我用elasticsearch-python,mysql-connector-python写了一个脚本,用crontab控制脚本。每半个小时,同步一下数据库。。。

wangcongyi_zz - 创造自己所想。

赞同来自:

为什么我用jdbc的方式同步数据建立索引都不行呢。官网下载的bin里面那些东西点开直接消失了。这是为什么呢
 

medcl - Elasticsearch老司机

赞同来自:

大家注意一下,river已经不支持了,建议logstash的input或者自己写程序定时轮询

owen

赞同来自:

建议18号下午来听下杭州的elastic分享,其中有一个Topic会介绍 mysql到es的全量和增量的方案

twinboss - 90后IT男

赞同来自:

请问大家:我想用 elasticsearch-jdbc 访问外网mysql数据库 可以访问吗?是否需要修改配置文件

要回复问题请先登录注册