Используйте конечную точку /export
: Экспорт наборов результатов .
Он поддерживает использование того же параметра fl
, что и при обычном поиске (хотя поиск только *:*
, вероятно, будет вести себя очень похоже при использовании SolrJ).
В SolrJ вам придется использовать класс CloudSolrStream
вместо правильной потоковой передачи результатов (по сравнению с обычным поведением при поиске *:*
).
Из Пример Джоэла Бернштейна при представлении функции :
import org.apache.solr.client.solrj.io.*;
import java.util.*;
public class StreamingClient {
public static void main(String args[]) throws IOException {
String zkHost = args[0];
String collection = args[1];
Map props = new HashMap();
props.put("q", "*:*");
props.put("qt", "/export");
props.put("sort", "fieldA asc");
props.put("fl", "fieldA,fieldB,fieldC");
CloudSolrStream cstream = new CloudSolrStream(zkHost,
collection,
props);
try {
cstream.open();
while(true) {
Tuple tuple = cstream.read();
if(tuple.EOF) {
break;
}
String fieldA = tuple.getString("fieldA");
String fieldB = tuple.getString("fieldB");
String fieldC = tuple.getString("fieldC");
System.out.println(fieldA + ", " + fieldB + ", " + fieldC);
}
} finally {
cstream.close();
}
}
}