elasticsearch查询日期范围

时间:2013-05-11 00:22:13

标签: search elasticsearch lucene range-query

我的弹性搜索有数据,尤其是日期的数据:

{
  "startTime": {
    "type": "string",
    "format": "yyyy/MM/dd",
    "index": "analyzed",
    "analyzer": "keyword"
  }
}

我正在添加一个date range picker,并希望使用所选日期来查询elasticsearch以查找所选范围内的startTime数据。我不确定如何将此查询结构化为elasticsearch,或者它是否可以使用这是一个字符串字段(我可能会改变它)。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:7)

您的字段是字符串,格式属性将被忽略。您应该更改映射并使用date类型。看看here,看看elasticsearch中可用的核心类型。

我会使用过滤器而不是查询。它将被缓存,因此更快。以下是过去7天的示例:

{
    "filter" : {
        "range" : {
            "PublishTime" : {
                "from" : "20130505T000000",
                "to" : "20131105T235959"
            }
        }
    }
}

请注意,如果您使用这样的过滤器,那么整天都会使用相同的过滤器,因此您可以充分利用缓存。