0

我正在尝试使用 jdbc River 将数据输入 Elastic Search,但这条河并未获取所有数据。我在 MySQL 表中有 450000 条记录,但在 ES 中我只得到大约 230000 条记录。

这是我的 ES 河流设置:

 curl -XPUT 'localhost:9200/_river/my_jdbc_river/_meta' -d '{
    "type" : "jdbc",
    "jdbc" : {
        "url" : "jdbc:mysql://localhost:3306/test",
        "user" : "test",
        "password" : "test",
        "sql" : "select * from test" },
        "index":{
        "index" : "test",
        "bulk_size":600,
        "max_bulk_requests":10,
        "bulk_timeout":"5s",
        "autocommit":"true"  
        }
}'

我查看了 Elastic Search 文档,但找不到解决方案。我正在使用river-jdbc-1.1.0.2 版本。

4

1 回答 1

0

您更新了,就像您需要索引 450000 一样。并且您的脚本具有以下参数

    "bulk_size":600,
    "max_bulk_requests":10,
    "bulk_timeout":"5s"

删除 bulk_timeout 5 秒并减小批量大小和 max_bulk_request。由于您正在索引 450000 个文档以进行弹性搜索,因此这些参数缺少数据。

假设即使我们错过了记录,您也没有提及上述参数。所以下面是使用river来获取数据的最优参数来控制es river请求索引数据。

    "bulk_size":160,
    "max_bulk_requests":5,

以前我有这个问题。我解决了在我的河流脚本中使用上述参数的问题。如果您应用上述参数,它肯定会起作用。尝试一次。

希望能帮助到你!

于 2014-10-17T07:33:57.807 回答