在Solr索引中,我有一个可选的日期字段。我们称之为Property_3_1044
。
我要找到Property_3_1044
的最大值和最小值,以及所有没有该日期的项的数量
我相信刻面是最好的方法。如果有更好的方法,请纠正我!
使用Query Facets可以使用聚合函数min
和max
分别获得最小值和最大值:
结果:
"facets":{
"count":249,
"Date1":{
"count":249,
"min":"2019-01-09T00:00:00Z",
"max":"2019-01-22T00:00:00Z"}}}
(除了问题:如何摆脱2个count
?)
使用Terms Facets可以使用missing
参数查找所有没有日期的项目:
结果:
"facets":{
"count":249,
"Date2":{
"buckets":[],
"missing":{
"count":240}}}}
如何组合这两个查询?我知道我可以同时执行这两个操作(只需将两个查询字符串连接起来),但是我想知道是否有更有效的方法。我假设同时执行查询构面和术语构面比仅拥有一个构面要昂贵得多。例如,聚合函数missing
允许我仅使用查询构面来执行所有操作(但是没有这种方法,对吗?)。
答案 0 :(得分:0)
我自己找到了解决方案;我只需要添加一个方面查询q
即可过滤非空值-> [* TO *]
:
结果中,外部计数是所有项目的数量(此处为225),内部构面计数将给出已设置日期的项目数量,即。在应用q
之后(此处:9):
"facets":{
"count":225,
"Date1":{
"count":9,
"min":"2019-01-09T00:00:00Z",
"max":"2019-01-22T00:00:00Z"}}}
没有日期的商品数量是差异(225-9 = 216)。