elasticsearch,Ruby On Rails,elasticsearch" /> elasticsearch,Ruby On Rails,elasticsearch" />

Ruby on rails 在弹性搜索中合并

Ruby on rails 在弹性搜索中合并,ruby-on-rails,elasticsearch,Ruby On Rails,elasticsearch,我正在使用MongoId和ruby on rails。对于我的搜索,我使用elasticsearch 我有一个日期字段。它是可选字段,我使用它作为停止日期。在我的搜索中,我想知道我的停止日期是否大于搜索停止日期。范例 { "range": { "stop_date": { "gt": "#{search_stop}" } } } 当停止日期为空时的问题我需要在这个查询中返回它,但它不是因为停止日期为空或不在文档中 我需要在文档中停止日期为空或不为空时,将搜索

我正在使用MongoId和ruby on rails。对于我的搜索,我使用elasticsearch

我有一个日期字段。它是可选字段,我使用它作为停止日期。在我的搜索中,我想知道我的停止日期是否大于搜索停止日期。范例

{
  "range": {
    "stop_date": {
      "gt": "#{search_stop}"
    }
  }
}
当停止日期为空时的问题我需要在这个查询中返回它,但它不是因为停止日期为空或不在文档中

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


如果您有任何建议,我们将不胜感激。

有两种方法

  • 一种是使用null_值来停止映射中的_日期。这边 编制索引时,如果缺少“停止日期”字段,则该值 设置为null_值将进入lucene反向索引。但问题是 使用这种方法,该值在所有情况下都是静态的 文档和ACORS始终可用。空值-
  • 第二种方法是更改查询

    {
      "query": {
        "filtered": {
          "filter": {
            "or": [
              {
                "range": {
                  "stop_date": {
                    "gt": "#{search_stop}"
                  }
                }
              },
              {
                "missing": {
                  "field": "stop_date"
                }
              }
            ]
          }
        }
      }
    }
    
    如果停止日期字段丢失或 日期范围筛选器匹配


  • 我的建议是使用第二种方法。

    有两种方法

  • 一种是使用null_值来停止映射中的_日期。这边 编制索引时,如果缺少“停止日期”字段,则该值 设置为null_值将进入lucene反向索引。但问题是 使用这种方法,该值在所有情况下都是静态的 文档和ACORS始终可用。空值-
  • 第二种方法是更改查询

    {
      "query": {
        "filtered": {
          "filter": {
            "or": [
              {
                "range": {
                  "stop_date": {
                    "gt": "#{search_stop}"
                  }
                }
              },
              {
                "missing": {
                  "field": "stop_date"
                }
              }
            ]
          }
        }
      }
    }
    
    如果停止日期字段丢失或 日期范围筛选器匹配


  • 我的建议是使用第二个。

    非常感谢……我完全同意你的看法。我在null_值之前尝试过,但我也不喜欢它。我实现了解决方案2:)我还有一个关于null_值的问题,如果字段或null没有标记,它应该返回默认值。或者只有在null值而不是no标记的情况下才返回默认值?非常感谢..我完全同意你的看法。我在null_值之前尝试过,但我也不喜欢它。我实现了解决方案2:)我还有一个关于null_值的问题,如果字段或null没有标记,它应该返回默认值。或者只有在null值不是no标记的情况下才返回默认值?