使用ElasticSearch JDBC river从表中获取更改
我正在为ElasticSearch配置JDBC river,但找不到任何好的配置示例。 我已经阅读了GitHub的所有内容 我有一个SQL查询,需要每隔X秒从所有表列中获取更改。我如何告诉JDBC river某些行已更改,应该重新编制索引 在ES服务器启动期间获取数据,正在进行轮询,但不会将更改从DB获取到ES 我的配置:使用ElasticSearch JDBC river从表中获取更改,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,我正在为ElasticSearch配置JDBC river,但找不到任何好的配置示例。 我已经阅读了GitHub的所有内容 我有一个SQL查询,需要每隔X秒从所有表列中获取更改。我如何告诉JDBC river某些行已更改,应该重新编制索引 在ES服务器启动期间获取数据,正在进行轮询,但不会将更改从DB获取到ES 我的配置: curl -XPUT 'localhost:9200/_river/itemsi/_meta' -d '{ "type" : "jdbc", "jdbc" : { "
curl -XPUT 'localhost:9200/_river/itemsi/_meta' -d '{
"type" : "jdbc",
"jdbc" : {
"driver" : "com.mysql.jdbc.Driver",
"url" : "jdbc:mysql://mydb.com:3306/dbname",
"user" : "yyy",
"password" : "xxx",
"sql" : "SELECT ii.id AS _id, ii.id AS myid, ... FROM ... LEFT JOIN .. ON...",
"poll" : "6s",
"strategy" : "simple"
},
"index" : {
"index" : "invoiceitems",
"bulk_size" : 600,
"max_bulk_requests" : 10,
"bulk_timeout" : "5s",
}
}'
谢谢。我只能就此发表我的看法,因为我目前正在构建一个解决方案,该解决方案执行Informix DB的大型索引。这是我目前的思考过程,还没有经过测试或实施- 我计划做的是对核心数据库本身执行一次索引,从那里实现触发器,将更新和/或新记录激发到一个单独的表中。显然,一旦我执行了初始索引,我将删除该河流以阻止它重新运行主索引,从这里我将定义一条河流以轮询表,该表将包含更新和/或新记录,例如每15分钟一次,并将其加载到ES中 我还没有完全弄清楚的一点是更新ES中已经存在的记录,因为我不知道river插件中有任何功能允许您从实际DB记录中的ID字段设置记录的ID,从而允许您从ES中检索和更新。也许写一个独立的程序,它能做river插件所做的事情 目前所有的想法和推测,但正如我所说,我目前正在研究这个问题。如果我还记得的话,我可能会回到这里,发布我的最终实现,如果它被允许走那么远的话。Add “自动提交”:正确
在索引设置中。然后问题将得到解决您可以使用schedule参数,它支持重复运行jdbc river插件 明细表参数的示例:
"schedule" : "0 0-59 0-23 ? * *"
这将在一周/月/年的每一分钟、每一小时、每一天执行JDBC river
有关明细表参数的详细信息,请参阅文档,
谢谢!由于缺少ElasticSearch的文档,我正在考虑Sphinx。但如果你在研究之后再写信给我,我会很高兴的。