繁体   English   中英

Elasticsearch中的COALESCE

[英]COALESCE in Elasticsearch

我将MongoId与红宝石配合使用。 对于我的搜索,我正在使用elasticsearch。

我有一个日期字段。 这是可选字段,我将其用作停止日期。 在搜索中,我想知道我的停止日期是否大于搜索停止日期。

{
  "range": {
    "stop_date": {
      "gt": "#{search_stop}"
    }
  }
}

停止日期为null时的问题我需要在此查询中返回它,但不是因为停止日期为null或不在文档中。

我需要停止日期为null或不在文档中时将搜索设置为默认值,例如21/31/2100。

任何建议将不胜感激...

有两种方法。

  1. 一种是在映射中使用null_value到stop_date。 这样,在索引时,如果缺少stop_date字段,则设置为null_value的值将转到lucene反向索引。 但是这种方法的问题在于,该值在所有文档中都是静态的,并且始终保持一致。 Null_value - http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-core-types.html
  2. 第二种方法是更改​​查询

     { "query": { "filtered": { "filter": { "or": [ { "range": { "stop_date": { "gt": "#{search_stop}" } } }, { "missing": { "field": "stop_date" } } ] } } } } 

    如果缺少stop_date字段或匹配日期范围过滤器,则此处的文档将匹配。

我的建议是使用第二个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM