我在轨道上使用带有红宝石的MongoId。对于我的搜索,我使用的是elasticsearch。
我有一个日期字段。它是可选字段,我将其用作停止日期。在我的搜索中,我想知道我的停止日期是否大于搜索停止日期。示例
{
"range": {
"stop_date": {
"gt": "#{search_stop}"
}
}
}
当停止日期为null时的问题我需要在此查询中返回它,但它不是因为文档中的停止日期为null。
我需要在停止日期为空时或文档中没有将搜索设置为默认值,如21/31/2100。
任何建议都会非常感激......
答案 0 :(得分:4)
有两种方法。
第二种方法是更改查询
{
"query": {
"filtered": {
"filter": {
"or": [
{
"range": {
"stop_date": {
"gt": "#{search_stop}"
}
}
},
{
"missing": {
"field": "stop_date"
}
}
]
}
}
}
}
如果缺少stop_date字段或何时,匹配文档 日期范围过滤器匹配。
我的建议是使用第二个。