繁体   English   中英

Elasticsearch。 范围查询带破折号的字符串

[英]Elasticsearch. Range query for strings with dashes

我正在对带有具有日期值的字符串字段的数据使用Elasticsearch,如下所示:

"2016-01-25 18:40:18.933"

我正在尝试使用范围过滤器来获取日期到日期的值。 例如:

"query" : {
        "filtered" : {
            "query" : {
                "range" : {
                    "createdDate" : {
                        "gte": "2015-11-01", 
                        "lte": "2016-01-25"
                    }
                }
            }
        }
      }
    }

但是结果不包含带有"createdDate": "2015-12-14 20:28:23.557""createdDate": "2015-12-14 20:28:23.557"

如果我使用"gte": "2015""gte": "2014-12-31" ,则结果中将包含带有"createdDate": "2015-12-14"值。

我的查询出了什么问题?

如果您希望能够对日期进行range查询,则需要将字段映射为date字段 ,否则它将无法按预期工作。 在您共享的映射中, createdDate是一个string 您需要擦除索引,并为createdDate字段创建具有正确映射的新索引,如下所示:

curl -XPOST localhost:9200/documents -d '{
   "mappings": {
      "order": {
         "properties": {
             "createdDate": {
                "type": "date"
             }
         }
      }
   }
}' 

然后,您可以重新索引数据, range查询将按预期工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM