【问题标题】:Elasticsearch inserting duplicate data?Elasticsearch插入重复数据?
【发布时间】:2023-03-19 23:10:01
【问题描述】:

当我使用 JDBC 将 Elasticsearch 连接到我的 MySQL 数据库时。

我希望它定期获取以从数据库中获取最新更改,但从日志中看起来它会在每次迭代时复制所有数据,而不仅仅是最近的更改。虽然当我使用 REST API 进行搜索时,我看不到任何重复项。这正常吗?

日志每分钟都会这样说(rows 每次增加约 3000 个):

[INFO][river.jdbc.RiverMetrics ] pipeline org.xbib.elasticsearch.plugin.jdbc.RiverPipeline@273cf2ca complete: river jdbc/items metrics: 24745 rows, 61.24885239965816 mean, (56.52859885706843 11.685682148116433 3.916887460538012), ingest metrics:经过 0 秒,291,25 KB 字节,12.0 字节平均,1,061 MB/s [2015-05-20 22:22:15,607][INFO][cluster.routing.allocation.decider][6TQNFDctRSaYVFyKjQahJA][Gideon] 超过 [6TQNFDctRSaYVFyKjQahJA][Gideon] 免费:26.6gb [11.4%] [Gideon] 低磁盘水印 [15%] ,副本不会分配给这个节点

这是我用来启动 JDBC 的

curl -XPUT 'localhost:9200/_river/items/_meta' -d '{
    "type" : "jdbc",
    "jdbc" : {
        "url" : "jdbc:mysql://localhost:3306/mydb",
        "user" : "root",
        "password" : "123",
        "sql" : "select items.id as _id from items",
        "index": "items",
        "type": "item",
        "schedule" : "0 0-59 0-23 ? * *"
    }
}'

这是正常行为吗?

【问题讨论】:

    标签: java mysql jdbc elasticsearch


    【解决方案1】:

    是的,这很正常。 ES 总是会重新索引从 sql 查询返回的所有行。

    您可以检查文档中的_version 字段,并查看每次执行河流后它都会增加。

    确实,您应该避免使用河流,因为它们是deprecated

    【讨论】:

    • 然而,根据作者的说法,JDBC 河流是future proof,因为它可以用作独立模块,这是根据“弃用河流”文章前进的方法之一。
    • 我要补充一点,Elasticsearch 请求是幂等的,这就是为什么即使你索引同一个文档数百次也没有重复
    猜你喜欢
    • 2014-05-17
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 2020-04-17
    • 1970-01-01
    • 2011-12-31
    相关资源
    最近更新 更多