在solr中迭代所有文档

时间:2017-07-05 13:42:48

标签: solr lucene nlp

我有一个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

我认为首先尝试对所有文档进行排序并使服务器崩溃。可悲的是,我不认为有可能绕过这种情况。这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

这是一个非常着名的反模式。您只需使用cursorMark feature深入了解结果集。

如果cursorMark不可行,请尝试export handler

答案 1 :(得分:0)

好吧,所以我无法使用光标,即使可能我不太清楚如何使用该工具。如果你和我有同样的问题,这里有3首曲目:

  • 跟踪一:根据@femtoRgon的建议,使用_docid_使用游标排序。我无法使其发挥作用,但我没有足够的时间来分配它。
  • 跟踪二:按照@Persimmonium
  • 的建议使用导出处理
  • 跟踪三(延迟跟踪):我最终做的是继续使用增量start值,但我从wt=python切换到wt=csv,这更快,允许我按批量查询10M文件。这限制了查询的数量,使用start代替cursorMark的费用是分摊的

祝你好运,如果你找到更好的东西,请发布你的解决方案。