我创建了一个索引,它为某些内容保存了两个日期(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\""
}
}
}
问题是:
它无法搜索任何结果,查询无法使用此方法比较日期
有什么建议吗?谢谢!
================================================== ==========
谢谢 Val 回答了这个问题,我使用了一个更 slim 的查询来执行相同的功能,我更改了一点查询语法以使其起作用:
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"
}
}
}
]
}
}
}
最佳答案
我建议改用两个 range
queries
GET i_want_get_date/_search
{
"query": {
"bool": {
"filter": [
{
"range": {
"lte": {
"startdate": "2019-08-22T03:55:47.165Z"
}
}
},
{
"range": {
"gte": {
"enddate": "2019-08-22T03:55:47.165Z"
}
}
}
]
}
}
}
关于elasticsearch - Elasticsearch查询大于日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57602030/