elasticsearch查询日期范围

cdi*_*run 2 lucene search elasticsearch range-query

我的elasticsearch有数据,尤其是日期类似的东西:

{
  "startTime": {
    "type": "string",
    "format": "yyyy/MM/dd",
    "index": "analyzed",
    "analyzer": "keyword"
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在添加一个日期范围选择器,并希望使用所选日期来查询elasticsearch以获取所选范围内的startTime数据.我不确定如何将此查询构造为elasticsearch,或者它是否可以使用这是一个字符串字段(尽管我可以改变它).

有人能帮我一下吗?

jav*_*nna 6

您的字段是字符串,格式属性将被忽略.您应该更改映射并使用date类型.看看这里有弹性搜索中可用的核心类型.

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

{
    "filter" : {
        "range" : {
            "PublishTime" : {
                "from" : "20130505T000000",
                "to" : "20131105T235959"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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