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

时间:2015-09-25 22:26:10

标签: mysql solr 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配置中使用大量实体,具有不同的限制,如:

    <entity name="first" query="select * from table LIMIT 0, 5000">
 ....
 </entity>
 <entity name="second" query="select * from table LIMIT 5000, 10000">
 ...
</entity>

但我有大量的数据,我不能用它来完全导入。 所以我想知道可能还有其他方法可以尝试,我的意思是从数据库中获取数据或者... 任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用startrows参数?我只是从管理面板上完成此操作,但您可以从那里进行实验,看看它是否适合您。否则,您可能想要点击这样的网址:[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");