在弹性搜索中过滤具有多个日期的文档

时间:2015-10-01 17:29:22

标签: elasticsearch

我的文档包含多个日期的字段。

"release_date" : [
"2015-07-10",
"2015-07-13",
"2015-07-26",
"2015-07-27"
]

我想过滤所有日期大于另一个给定日期的文件

当文档只有一个日期时,我能够使用范围过滤器

{
    "constant_score": {
        "filter": {
            "range" : {
                "release_date" : {
                    "gte": "2012-01-01",
                }
            }
        }
    }
}

但是现在我有一个以上的约会,我找不到实现类似结果的方法。有可能吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

确保您的“release_date”字段已正确映射到日期对象。以下示例适用于您尝试执行的操作:

PUT test1

PUT /test1/_mapping/type1
{
    "type1" : {
        "properties" : {
            "release_date" : {"type" : "date"}
        }
    }
}

POST test1/type1
{
  "release_date" : [
    "2014-03-28",
    "2010-03-28",
    "2011-03-28"
    ]
}

GET test1/type1/_search
{
  "query": {
"filtered": {
      "filter": {
        "range": {
          "release_date": {
            "gte": "2013-01-01"
          }
        }
      }
    }
  }
}