繁体   English   中英

如何使用DIH将数据从DB批量导入SOLR?

[英]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>

但是我有大量数据,无法完全导入。 所以我想知道也许应该有其他尝试的方法,我的意思是从数据库中大块地获取数据,或者...任何想法都会受到赞赏。

您是否尝试过使用startrows参数? 我只是在管理面板上完成了此操作,但是您可以从那里进行实验,看看是否适合您。 否则,您可能想要命中这样的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM