【问题标题】:Trying to use jdbc river ElasticSearch plugin for batch processing尝试使用 jdbc river ElasticSearch 插件进行批处理
【发布时间】:2014-01-30 00:04:03
【问题描述】:

我需要编写一些索引作业,每天运行一次,查询我们的 Oracle 数据库表并索引到 ElasticSearch。由于存在表依赖关系,一些表首先索引,而其他表则其次。但是围绕索引过程,我需要增强进入 ES 索引的字段,以及记录到我们的 Oracle 数据库表作业状态,甚至可能是索引过程成功/失败的记录。

我可以使用 Elastic Search 插件 JDBC-River。

【问题讨论】:

    标签: elasticsearch elasticsearch-jdbc-river elasticsearch-plugin


    【解决方案1】:

    我担心的是在查询后通过插入语句登录回 RDBS 以从数据库中提取。我与 jdbc-river 的创建者取得了联系。他提到这是我应该如何配置的东西:真的很有帮助!

    curl -XDELETE '0:9200/_river/my_jdbc_river/
    
    
    curl -XPUT '0:9200/_river/my_jdbc_river/_meta' -d '
        {
            "type": "jdbc",
            "jdbc": {
                "url": "jdbc:mysql://localhost:3306/test",
                "user": "",
                "password": "",
                "schedule": "0 0-59 0-23 ? * *",
                "sql": [
                    {
                        "statement": "select *, created as _id, \"myjdbc\" as _index, \"mytype\" as _type from orders"
                    },
                    {
                        "statement": "insert into ack(n,t,c) values(?,?,?)",
                        "parameter": [
                            "$job",
                            "$now",
                            "$count"
                        ]
                    }
                ]
            }
        }'
    

    【讨论】:

    • "schedule": "0 0-59 0-23 ? * *" 表示每分钟运行一次。将其更改为 "schedule": "0 0 0 ? * *" 以安排每天午夜运行一次
    【解决方案2】:

    是的,您可以通过在 jdbc River 中使用 poll 参数来做到这一点。详细的

    轮询

    JDBC 河流以给定的时间间隔重复运行。此方法也称为polling。您可以使用 poll 参数指定轮询间隔,该参数采用 Elasticsearch 时间值。默认值为1h

    示例:-

    curl -XPUT 'localhost:9200/_river/my_jdbc_river/_meta' -d '{
        "type" : "jdbc",
        "jdbc" : {
            "driver" : "com.mysql.jdbc.Driver",
            "url" : "jdbc:mysql://localhost:3306/test",
            "user" : "",
            "password" : "",
            "sql" : "select * from orders",
            "poll" : "1h" 
        },
        "index" : {
            "index" : "jdbc",
            "type" : "jdbc",
            "bulk_size" : 100,
            "max_bulk_requests" : 30,
            "bulk_timeout" : "60s"
        }
    }'
    

    供您参考:- https://github.com/jprante/elasticsearch-river-jdbc/issues/92

    【讨论】:

    • 但是我在这里真正关心的是插入。插入回 RDBMS 以记录哪些记录被索引到弹性中,哪些记录失败了。我怎样才能创建这种逻辑?谢谢
    • @TazMan 我不认为 jdbc 河支持这一点,如果你需要的不是从 db 到弹性的简单批量索引,你最好自己做所有索引/记录
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多