[英]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.