我创建了一个索引,它为某个对象保存两个日期(D1,D2),然后我想查询这个时刻是否在D1和D2之间,所以我查询:
startdate <= "2019-08-22T03:55:47.165Z" AND endate>= "2019-08-22T03:55:47.165Z"
它成功地返回了我想要的数据,所以我尝试在Dev工具中再次执行相同的操作:
GET i_want_get_date/_search
{
"query":{
"query_string":{
"query":"startdate<= \"2019-08-22T03:55:47.165Z\" AND enddate>= \"2019-08-22T03:55:47.165Z\""
}
}
}
问题是:
它无法搜索任何返回结果,查询无法使用此方法比较日期
有什么建议吗?谢谢!
谢谢瓦尔回答这个问题,我使用了一个非常模糊的查询来实现同样的功能,我稍微修改了一下查询语法,使其正常工作:
GET i_want_get_date/_search
{
"query": {
"bool": {
"filter": [
{
"range": {
"startdate":{
"lte":"2019-08-22T03:55:47.165Z"
}
}
},
{
"range": {
"enddate":{
"gte":"2019-08-22T03:55:47.165Z"
}
}
}
]
}
}
}
2条答案
按热度按时间o7jaxewo1#
我建议改用两个
range
querieszz2j4svz2#
您的答案中存在语法错误,弹性字段应位于gte或lte之前