我正在尝试使用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>
但我有大量的数据,我不能用它来完全导入。 所以我想知道可能还有其他方法可以尝试,我的意思是从数据库中获取数据或者... 任何想法都将不胜感激。
答案 0 :(得分:0)
您是否尝试过使用start
和rows
参数?我只是从管理面板上完成此操作,但您可以从那里进行实验,看看它是否适合您。否则,您可能想要点击这样的网址:[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");