无法在elasticsearch中的jdbc river的sql查询中指定动态时间范围

时间:2012-10-17 12:49:08

标签: jdbc lucene elasticsearch

我使用jdbc river进行elasticsearch索引mysql表数据。

我的河:

 curl -XPUT 'localhost:9200/_river/river_mention_reports/_meta' -d '{
    "type" : "jdbc",
    "jdbc" : {
        "driver" : "com.mysql.jdbc.Driver",
        "url" : "jdbc:mysql://localhost:3306/ESTest1_development",
        "user" : "root",
        "password" : "password",
        "sql" : "select * from table where creation_time >= (NOW() - INTERVAL 2 MINUTE)",
        "poll" : "2m",
        "versioning" : false
    },
    "index" : {
        "index" : "monitoring",
        "type" : "mention_reports"
    }
}'

我在河里指定的SQL查询是:

select * from table where creation_time >= (NOW() - INTERVAL 2 MINUTE)

现在问题是,每次轮询后的河流会删除在查询中指定的时间范围(当前减去2分钟)之外编入索引的数据,而不是向索引添加新数据。我指定时间范围的原因是因为我不希望河流一次又一次地重新索引整个数据集。

1 个答案:

答案 0 :(得分:0)

您需要在河流配置的“jdbc”部分指定“digesting”:false (默认为true),您将在其中进行“版本控制”:现在为false。顺便说一下,“版本控制”默认为false,实际上应该在“索引”部分,而不是“jdbc”部分。