php - Elasticsearch使用JDBC与MySQL数据同步,出现 一直重复数据的问题.
天蓬老师
天蓬老师 2017-04-11 10:07:40
[PHP讨论组]

每次后台去运行.sh文件运行一次ES中就会把之前的数据重复一次,并不是覆盖,自己看了一下应该是时间戳的问题,因为.sh里"schedule" 字段是格式化的时间,而我的数据库里存的是时间戳的.

#bin/sh
bin=$JDBC_IMPORTER_HOME/bin
lib=$JDBC_IMPORTER_HOME/lib
echo '
{
    "type" : "jdbc",
    "jdbc" : {
        "url" : "jdbc:mysql://localhost:3306/wenda",
        "user" : "root",
        "password" : "123456",
        "statefile" : "statefile-ask.json",
        "schedule" : "0 0-59 0-23 ? * *", #应该是这里的问题
        "sql" : [
            {
                "statement" : "select * from think_ask where create_time > ?",
                "parameter" : [ "$metrics.lastexecutionstart" ]
            }
        ],
        "index" : "myindex",
        "type" : "mytype",
        "index_settings" : {
            "analysis" : {
            "analyzer" : {
                "ik" : {
                    "tokenizer" : "ik"
                }
            }
        }
        },
        "type_mapping": {
            "ask" : {
                "properties" : {
                    "asid" : {
                        "type" : "long"
                    },
                    "content" : {
                        "type" : "string",
                        "analyzer" : "ik",
                        "index" : "not_analyzed",
                        "searchAnalyzer": "pinyin_analyzer"
                    },
                    "uname" : {
                        "type" : "string",
                        "analyzer" : "ik"
                    },
                    "click_count" : {
                        "type" : "long"
                    },
                    "time" : {
                        "type" : "long"
                    }
                }
            }
        }
    }
}
' | java \
    -cp "${lib}/*" \
    -Dlog4j.configurationFile=${bin}/log4j2.xml \
    org.xbib.tools.Runner \
    org.xbib.tools.JDBCImporter

现在设置的是每分钟执行一次这个sh文件,每执行一次数据都会上传一次,重复数据,不管有没有更新数据都会上传,请问这个时间改怎么改合适?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(1)
ringa_lee

你在"statement"处写sql时就可以格式化时间你想要的时间格式
例如

SELECT FROM_UNIXTIME(createtime, '%Y-%m-%d %H:%i:%s')  AS dateline, * FROM  think_ask WHERE createtime>?
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号