如何使用range获得kibana每周的第一天?

h7appiyu  于 2021-06-13  发布在  ElasticSearch
关注(0)|答案(1)|浏览(361)

我在es中有日期字段,我只想得到一周的第一天。
尝试

{
  "query": {
    "range": {
      "myDate": {
        "from": "now/w",
        "to": "now/w"
      }
    }
  }
}

{
  "query": {
    "terms": {
      "myDate": [
        "now/w"
      ]
    }
  }
}

但它总是从周一到今天返回结果。

ecfsfe2w

ecfsfe2w1#

您的查询的方向是正确的,但是由于您是按周取整的,因此该周的所有天都将具有相同的值。您需要做的是添加另一个过滤器,以便只考虑日期为该周星期一的文档,如下所示:

{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "myDate": {
              "from": "now/w",
              "to": "now/w"
            }
          }
        },
        {
          "script": {
            "script": {
              "source": "doc['myDate'].value.dayOfWeek == 1"
            }
          }
        }
      ]
    }
  }
}

除了使用脚本(performance killer),您还可以在文档的另一个字段中索引一周中的某一天,这样就可以在该字段上运行简单的术语查询。

相关问题