Elasticsearch无法按日期时间范围

时间:2016-05-07 13:06:36

标签: datetime elasticsearch django-rest-framework

这可能是一个愚蠢的问题,但我无法通过datetime字段过滤弹性搜索索引。我一定错过了什么。

这是映射:

"created_at": {
    "type": "date",
    "format": "strict_date_optional_time||epoch_millis"
},

这就是我得到的:

{
    "_index": "myindex",
    "_type": "myindextype",
    "_id": "21c",
    "_score": 1,
    "_source": {
      "code": "21c",
      "name": "hello",
      ...
      "created_at": "2015-04-30T13:10:50.107769Z"
    }
 },

使用此查询:

"query": {
  "filtered": {
    "query": {},
    "filter": {
      "range": {
        "created_at": {
          "gte": "2015-05-02T13:10:50.107769Z"
          "format": "strict_date_optional_time||epoch_millis"
}}}}}

我希望过滤掉上面的条目。但它什么也没有回报。

时间格式有问题吗?因为它直接来自Django Rest Framework的serializers。他们声称它是ISO 8601格式,而elasticsearch声称same

我还希望通过像“2015-05-02”这样的简单日期来过滤它们。

我被困住了。提前谢谢。

编辑:无论我写入范围过滤器,都无关紧要。它总是返回所有条目。

1 个答案:

答案 0 :(得分:1)

这很有用。我尝试了很多不同的东西,在某些方面迷失了方向。

{
  "query": {
    "filtered": {
      "filter": {
        "range": {
          "created_at": {
            "gte": "2015-05-02"
          }
        }
      }
    }
  }
}