我正在尝试过滤掉任何有"可用直到"过去的日期。但是,如果"可用直到" date为null,我仍然想返回结果。
以下是我需要的输出:
onClick="return confirm('Delete All Checked?');"
<< 不应该返回
Available Until Date < today
&lt;&lt; 应该返回
Available Until Date >= today
&lt;&lt; 应该返回
我已经查看了以下其他堆栈溢出问题here和here,但是,我相信两者都在查询上下文中,而我需要使用过滤器上下文。
以下是我目前的代码。我如何修改它以允许使用过滤器上下文在&#34;可用直到&#34;中使用空值的结果?
Available Until Date is null
感谢您的帮助! :)
答案 0 :(得分:0)
唯一的方法是使用bool/should
查询来捕获
AvailableUntil
日期AvailableUntil
晚于今天查询如下所示:
var baseQuery = {
"size": 1000,
"query": {
"bool": {
"minimum_should_match": 1,
"should": [
{
"bool": {
"must_not": {
"exists": {
"field": "Product.AvailableUntil"
}
}
}
},
{
"range": {
"Product.AvailableUntil": {
"gte": "now"
}
}
}
]
}
}
};
答案 1 :(得分:0)
以下解决方案是我最终使用的。通过将bool子句嵌套在filter子句中的另一个bool子句中,我能够使用filter context实现我想要的输出。
var baseQuery = {
"size": 1000,
"query": {
"bool": {
"filter": [{
"bool": {
"should": [{
"range": {
"Product.AvailableUntil": {
"gte": "now"
}
}
}, {
"bool": {
"must_not": {
"exists": {
"field": "Product.AvailableUntil"
}
}
}
}]
}
}],
"must_not": [],
"should": [],
"must": []
}
}
};