solr - 在 Solr 中的分面字段上分面
问题描述
我有一系列文件,例如:
{
myTime : <a date_time>,
myVal : <a number>
}
我想知道该数字的最大每小时平均值。所以基本上我希望每小时都有一个桶,每个桶的平均值为myVal
,然后找到该平均值的最大值。
我尝试像下面这样使用 Json Faceting,但它当然不起作用,抱怨avgMyVal
不是一个已知的领域:
json.facet={
maxAvgMyVal : "max(avgMyVal)",
tempi: {
type: range,
field: myTime,
start: "NOW-7DAYS",
end: "NOW",
gap: "%2B1HOUR",
facet: {
avgMyVal: "avg(myVal)"
}
}
}
有没有办法让 solr 做到这一点?还是我错过了什么?
使用 Solr 7.2.1。
解决方案
可以在一个请求中执行此操作,但您至少可以使用两个单独的请求(如果您不介意排序,则可以一个请求)来执行此操作。
您可以按函数返回的值对构面进行排序avg
并检索第一个值:
sort: "avgMyVal desc"
..在您的tempi
定义中。如果您需要按 中的间隔对结果进行排序tempi
,您可以在检索后对其进行排序以显示,或者进行两次查询 - 用于limit: 1
检索 中的最大值avgMyVal
。
推荐阅读
- python - 在 Python 中打印最后 3 个字母相同的 5 个单词
- javascript - Reactjs 中的 Map 函数将添加对象放入数组中
- html - 对无法正常工作的图像使用媒体查询
- postgresql - Postgresql - 将 2019-11-03T08:00:00Z 存储在 postgres db 时间戳中,它返回 2019-11-03T09:00:00Z。日光于 2019 年 11 月 3 日生效
- weblogic - 由于 NameAlreadyBoundException 导致的 Weblogic 部署问题 - 在将 weblogic 从 10.3.6 升级到 Weblogic 12cR2 之后
- opencl - 将 OpenCL SPIR-V 转换为 Vulkan SPIR-V
- signalr - SignalR(原始)不向客户端发送消息
- acumatica - 如何从 Acumatica 中的 Ggraph 对象读取数据?
- sas - Proc Report-为不同的行分配不同的格式
- curl - Django 服务器拒绝所有 CURL 请求但邮递员请求成功