我正在使用带有日期值字符串字段的数据的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"
的值
如果我使用 "gte": "2015"
或 "gte": "2014-12-31"
,那么 "createdDate": "2015-12-14"
的值将包含在结果中 .
我的查询有什么问题?
1 回答
如果您希望能够在日期上运行
range
查询,则需要将字段映射为date field,否则它将无法按预期工作 . 在您共享的映射中,createdDate
是string
. 您需要擦除索引并使用createdDate
字段的正确映射创建一个新索引,如下所示:然后,您可以重新索引数据,
range
查询将按预期工作 .