1

我创建了一个索引,它保存了两个日期(D1,D2),之后我想查询这个时间是否在 D1 和 D2 之间,所以我查询:

startdate <= "2019-08-22T03:55:47.165Z" AND endate>= "2019-08-22T03:55:47.165Z"

它成功地返回了我想要的数据,所以我尝试在开发工具中再次做同样的事情:

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回答问题,我使用了一个非常简洁的查询来执行相同的功能,我更改了一点查询语法以使其工作:

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"
            }
          }
        }
      ]
    }
  }
}

4

1 回答 1

3

我建议改用两个range查询

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"
            }
          }
        }
      ]
    }
  }
}
于 2019-08-22T05:50:53.460 回答