【问题标题】:elasticsearch query dates by rangeelasticsearch按范围查询日期
【发布时间】:2013-05-11 00:22:13
【问题描述】:

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

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

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

谁能帮帮我?

【问题讨论】:

    标签: search elasticsearch lucene range-query


    【解决方案1】:

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

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

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

    请注意,如果您使用这样的过滤器,它将整天都是同一个过滤器,因此您可以充分利用缓存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-17
      • 2018-04-10
      • 2017-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多