[英]How import data from DB to SOLR in chunks using DIH?
我正在尝试使用DIH将数据从MySQL导入到SOLR,我的查询是由联接和左外部联接组成的,例如:
select * from products join merchants on merchants.id=products.merchant_id
left outer join cats_products on products.id=cats_products.product_id
join categories on cats_products.category_id=categories.id;
,当我使用join时一切正常,但是当我想使用左外部联接时,它需要很长时间,并且在很长一段时间后,它什么也没有返回并且变得不可用,我发现了有关使用batchSize的一些信息,但是当我更改时这个参数的数字没有区别,所以我的问题之一就是为什么它没有影响? 例如, batchSize =“ 30000” 。
然后我想在查询中使用limit ,并在dih config中使用很多实体,但有不同的限制,例如:
<entity name="first" query="select * from table LIMIT 0, 5000">
....
</entity>
<entity name="second" query="select * from table LIMIT 5000, 10000">
...
</entity>
但是我有大量数据,无法完全导入。 所以我想知道也许应该有其他尝试的方法,我的意思是从数据库中大块地获取数据,或者...任何想法都会受到赞赏。
您是否尝试过使用start
和rows
参数? 我只是在管理面板上完成了此操作,但是您可以从那里进行实验,看看是否适合您。 否则,您可能想要命中这样的URL: [host]:[port]/solr/dataimport?command=[command]&clean=[true|false]&commit=[true|false]&start=[start]&rows=[rows]
但是,您将需要自己记录偏移量。
如果您使用的是SolrJ,则可能会执行以下操作
solrQuery.set("command", "full-import");
solrQuery.set("clean", "true");
solrQuery.set("commit", "true");
solrQuery.set("start", "0");
solrQuery.set("rows", "1000");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.