我正在将MongoId与 ruby 配合使用。对于我的搜索,我正在使用elasticsearch。
我有一个日期字段。这是可选字段,我将其用作停止日期。在搜索中,我想知道我的停止日期是否大于搜索停止日期。例
{
"range": {
"stop_date": {
"gt": "#{search_stop}"
}
}
}
停止日期为null时的问题我需要在此查询中返回,但不是因为停止日期为null或文档中没有。
我需要当停止日期为null或不在文档中时将搜索设置为默认值,例如21/31/2100。
任何建议将不胜感激...
最佳答案
有两种方法。
索引时,如果缺少stop_date字段,则该值
设置为null_value将转到lucene反向索引。但是问题
这种方法是,该值在所有范围内都是静态的
记录和记录所有时间。空值-
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-core-types.html
{
"query": {
"filtered": {
"filter": {
"or": [
{
"range": {
"stop_date": {
"gt": "#{search_stop}"
}
}
},
{
"missing": {
"field": "stop_date"
}
}
]
}
}
}
}
如果缺少stop_date字段,或者当
日期范围过滤器匹配。
我的建议是使用第二个。
关于ruby-on-rails - Elasticsearch中的COALESCE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27649477/