导出结果集
字段要求
所有被排序和导出的字段的 docValues 都必须设置为 true
。有关更多信息,请参阅有关DocValues的部分。
/export 请求处理器
具有适当配置的 /export
请求处理器是 Solr 的开箱即用请求处理器之一 - 有关更多信息,请参阅隐式请求处理器。
请注意,此请求处理器的属性被定义为“不变量”,这意味着它们不能被稍后传递的其他属性覆盖(例如在查询时)。
请求结果导出
您可以使用 /export
发出请求以导出查询的结果集。
所有查询都必须包含 sort
和 fl
参数,否则查询将返回错误。还支持过滤器查询。
可选参数 batchSize
确定部分结果的内部缓冲区大小。默认值为 30000
,但用户可能希望指定较小的值以限制内存使用(以性能降低为代价),或者指定较高的值以提高导出性能(这种关系不是线性的,较大的值不会带来成比例的性能提升)。
支持的响应写入器是 json
和 javabin
。出于向后兼容性的原因,也支持将 wt=xsort
作为输入,但 wt=xsort
的行为与 wt=json
相同。默认输出格式为 json
。
以下是导出一些已索引日志数据的请求示例
https://127.0.0.1:8983/solr/core_name/export?q=my-query&sort=severity+desc,timestamp+desc&fl=severity,timestamp,msg
指定排序条件
sort
属性定义文档在导出的结果集中的排序方式。结果可以按任何字段类型为 int、long、float、double、string 的字段排序。排序字段必须是单值字段。
随着您添加更多的排序字段,导出性能会变慢。如果 JVM 之外有足够的物理内存可用来加载排序字段,那么随着排序字段的添加,性能将会线性地变慢。否则可能会更糟。
指定字段列表
fl
属性定义了结果集中将导出的字段。任何可以排序的字段类型(即 int、long、float、double、string、date、boolean)都可以在字段列表中使用。这些字段可以是单值或多值。
可以使用通配符模式来表示字段列表(例如,fl=*_i
),并且它将被扩展为与该模式匹配并且可以导出的字段列表,请参阅字段要求。
目前不支持返回分数。
指定本地流式表达式
可选的 expr
属性定义了一个流式表达式,它允许在结果集导出之前在本地处理文档。
表达式必须使用特殊的 input()
流,该流代表来自 /export
处理程序的原始结果。流式表达式的输出然后成为 /export
处理程序的输出。 对于此流式表达式,始终设置 &streamLocalOnly=true
标志。
由于本地内存中减少了要返回的文档数量,将流式表达式与 /export
处理程序一起使用可能会显著提高性能。
这是一个使用 top
修饰符仅返回前 N 个结果的示例
https://127.0.0.1:8983/solr/core_name/export?q=my-query&sort=timestamp+desc,&fl=timestamp,reporter,severity&expr=top(n=2,input(),sort="timestamp+desc")
(请注意,top
修饰符中的排序规范必须与处理程序参数中的排序规范匹配)。
这是一个使用 unique
修饰符的示例
https://127.0.0.1:8983/solr/core_name/export?q=my-query&sort=reporter+desc,&fl=reporter&expr=unique(input(),over="reporter")
(请注意,over
参数必须使用 fl
参数中请求的字段之一)。
分布式支持
有关分布式支持,请参阅流式表达式部分。