我有一个200M +文档的solr实例。我想找到一种有效的方法来迭代所有这些文档。
我尝试使用start参数来制定查询列表:
http://ip:port/solr/docs/select?q=*:*&start=0&rows=1000000&fl=content&wt=python
http://ip:port/solr/docs/select?q=*:*&start=1000000&rows=1000000&fl=content&wt=python
...
但是当开始太高时,它会很慢。
我还尝试将cursorMark参数与初始查询一起使用,如下所示:
http://ip:port/solr/docs/select?q=*:*&cursorMark=*&sort=id+asc&start=0&rows=1000000&fl=content&wt=python
我认为首先尝试对所有文档进行排序并使服务器崩溃。可悲的是,我不认为有可能绕过这种情况。这样做的正确方法是什么?
答案 0 :(得分:1)
这是一个非常着名的反模式。您只需使用cursorMark feature深入了解结果集。
如果cursorMark不可行,请尝试export handler
答案 1 :(得分:0)
好吧,所以我无法使用光标,即使可能我不太清楚如何使用该工具。如果你和我有同样的问题,这里有3首曲目:
_docid_
使用游标排序。我无法使其发挥作用,但我没有足够的时间来分配它。start
值,但我从wt=python
切换到wt=csv
,这更快,允许我按批量查询10M文件。这限制了查询的数量,使用start
代替cursorMark
的费用是分摊的祝你好运,如果你找到更好的东西,请发布你的解决方案。