您的位置:首页 > 其它

关于Elasticsearch使用jdbc-river同步数据每次追加的问题

2015-04-22 11:49 781 查看
最近项目中使用到搜索文章功能,于是就去调研搜索引擎,最后选择了elasticsearch。

使用过程中碰到了如下问题:

我用的是jdbc-river去同步数据,测试时是写的每隔一分钟去同步一次,结果发现同步

回来的数据和之前的数据都在,刚开始我以为是缓存,后来排查发现是后来每次同步

的数据都追加了造成多个数据。

查看elasticsearch官方文档发现:

For fetching a table, a simple "select *" (star) query can be used. Star
queries are the simplest variant of selecting data from a database. They dump tables into
Elasticsearch row-by-row. If no _id column name is given, IDs will be automatically generated.

意思是:

抓取一个表,一个简单的“select
*”(star)可以使用查询。明星查询从数据库选择数据的简单的变体。他们转储表到Elasticsearch逐行。如果没有_id列名,IDs将自动生成。

所以抓取数据时指定一个_id列名,问题就解决了。

例如:我之前的sql语句是:select
* from article;

改为:select
*,article_id as _id from article;

就ok了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息