组合实际日期和数学表达式的ElasticSearch日期数学查询

6psbrbz9  于 2023-03-12  发布在  ElasticSearch
关注(0)|答案(1)|浏览(168)

假设我在ms new Date('2023-03-09').getTime()中有一个时间戳,输出为1678320000000。我如何使用这个特定的时间戳执行ElasticSearch查询,以使用日期数学表达式查找从该时间戳到它之前1分钟的任何文档?当将日期格式化为字符串(如2023-03-09-1m)时,我似乎遇到了同样的问题。我尝试了如下ES查询:

"range": { 
  "@timestamp": {
    "gte": "1678320000000-1m", 
    "lt": "1678320000000"
  } 
}

但它似乎得到了错误

"reason": {
  "type": "parse_exception",
  "reason": "failed to parse date field [1678320000000-1m] with format [strict_date_optional_time||epoch_millis]",
  "caused_by": {
    "type": "illegal_argument_exception",
    "reason": "Unrecognized chars at the end of [1678320000000-1m]: [320000000-1m]"
  }
}

而如果我对now使用普通的日期数学,查询就会成功。

"range": { 
  "@timestamp": {
    "gte": "now-1m", 
    "lt": "1678320000000"
  } 
}

有没有什么方法可以在一个查询中同时合并日期数学和数学表达式?

zf2sa74q

zf2sa74q1#

这个应该可以

"range": { 
  "@timestamp": {
    "gte": "1678320000000||-1m", 
    "lt": "1678320000000"
  } 
}

日期数学文档说
表达式以锚日期开始,该日期可以是现在,也可以是以结尾的日期字符串||。

相关问题