我正在尝试使用jdbc河将数据输入弹性搜索,但这条河并没有获得所有数据。我在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版本。
答案 0 :(得分:0)
您更新时需要索引450000。并且您的脚本具有以下参数
"bulk_size":600,
"max_bulk_requests":10,
"bulk_timeout":"5s"
删除bulk_timeout 5秒并减小批量大小和max_bulk_request。由于您要将450000文档编入索引以弹性搜索某些缺少这些参数的数据。
假设您没有提及上述参数,即使我们错过了记录。 因此,以下是使用river获取数据以控制es河流请求索引数据的最佳参数。
"bulk_size":160,
"max_bulk_requests":5,
以前我遇到过这个问题。我在我的河流剧本中使用了上面的参数解决了。如果你应用了上面的参数,它肯定会起作用。这一次。
希望它有所帮助!