Solr有一个很棒的streaming feature,允许通过游标快速获取大量文档(例如solrdump允许从命令行使用此功能)。
对于这些类型的游标查询,可以设置 wt 参数以及控制序列化,默认为 xml ,从Solr 5.5开始。
$ curl -v "http://solr/select?cursorMark=*&fl=...&q=...&sort=id+asc&wt=json"
-------
但是,要使流式查询起作用,必须从每个响应中解析 nextCursorMark 。使用JSON和XML,这只是另一个字段,但 wt 设置为 csv 时,无法容纳此信息(至少不在有效负载中)。
{
...
},
"nextCursorMark": "AoE4YWktNDgtUTAxRlgxODFNakU1TVRFeU1R"
}
我的第一个想法是 nextCursorMark 可能会在HTTP标头中发送,但似乎不是。
$ curl -v http://ex.index/solr/select?...wt=csv
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Last-Modified: Fri, 05 Jan 2018 00:04:25 GMT
< ETag: "ZTM2MDQ4MDAwMDAwMDAwMFNvbHI="
< Content-Type: text/plain; charset=UTF-8
< Transfer-Encoding: chunked
<
----8<---- body ----8<----
是否可以将这种查询与 CSV格式一起使用?我很好奇,因为如果发送方和接收方都可以使用CSV而不是JSON或XML,我会期望获得轻微的性能提升。
更新
似乎已在SolrCore.java中的标题中放入了一些信息(状态,查询时间)。可能仅与ADMIN,also in V2 - V2 docs一起使用。
答案 0 :(得分:2)
如您所见[{3}},不支持该功能。如果你有一些你可以排序的唯一id,你可以像那里解释的那样滚动你自己的cursorMark(仍然使用wt = csv)。我做了大量移植,接近10亿个文档,工作得很好。
重要提示,索引不得写入,或者如果是: