2

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

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

我正在添加一个日期范围选择器,并希望使用选择的日期来查询弹性搜索数据,其中 startTime 在所选范围内。我不确定如何将此查询构造为 elasticsearch,或者它是否甚至可以与这个字符串字段一起使用(不过,我可能会更改它)。

有人能帮我一下吗?

4

1 回答 1

6

您的字段是一个字符串,格式属性被忽略。您应该更改映射并使用date类型。在此处查看以查看 elasticsearch 中可用的核心类型。

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

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

请注意,如果您像这样使用过滤器,它将整天使用相同的过滤器,因此您将充分利用缓存。

于 2013-05-11T09:02:04.900 回答