弹性相对数据数学-寻找今天的一切

xkrw2x1b  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(1)|浏览(323)

我试图用elasticsearch做一个相当简单的查询,但是我不知道我做错了什么,所以我在这里发布一些提示。
我有一个弹性索引,每个文档都有这样的日期:

{
  // edited for brevity
  "releasedate": "2020-10-03T15:55:03+00:00",
}

我使用django drf来进行这样的查询,在这里传递这个值 &releasedate__gt=now-3d/d 最终得到这样一个弹性范围查询。

{

  "from": 0,
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "releasedate": {
              "gt": "now/d-3d"
            }
          }
        }
        ]
    }
  },
  "size": 10,
  "sort": [
    "_score"
  ]
}

如果我想看到所有的“昨天以来的文件”,我会把它看作是所有有文件的文件 releasedate 昨天午夜之后,我想查询的关键部分应该是这样的:

{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "releasedate": {
              "gt": "now/d-1d"
            }
          }
        }
        ]
    }
  }
}

所以我想这会一直持续到今天00:00,然后有一天再回去。
所以如果我在2020-10-04运行这个。我想这会捕捉到一个发布日期为 2020-10-03T15:55:03+00:00 .
这是我的理由
四舍五入 now/d 会带我们去 2020-10-04T00:00 .
然后有一天和我一起回去 -1d 会带我们去 2020-10-03T00:00 .
这应该包括文件,但我没有看到。我需要一天以上的时间来查找文件,所以我需要使用 now/d-2d 查找匹配的文档。
知道为什么会这样吗?我不知道该怎么看 now/d-1d 以时区感知对象的方式进行评估,以检查-这是我可能达到的目标,但我不知道如何使用弹性。
fwiw,这是弹性5.6。我们很快就会更新。

soat7uwm

soat7uwm1#

我要说的是,一旦你四舍五入到最近的一天 now-2d/d 或者 now/d-2d --正如你所做的那样) gt 查询的时间间隔实际上是以天为基础的。
换句话说, gt : 2020-10-03T00:00>= 2020-10-0 4 T00:00 . 所以你需要什么而不是 gtgte 那会起作用的 >=2020-10-03T00:00 .

相关问题