我想知道是否有办法将时间范围定义如下。
与观察者一起,我在一个字段中寻找具有特定消息的记录。问题是,我希望它在输入记录72小时后找到它们。
这是我的代码:
GET my_index/_search
{
"query": {
"bool": {
"should": [
{
"match_phrase": {
"status": {
"query": "process"
}
}
},
{
"match_phrase": {
"estatus": {
"query": "error"
}
}
},
{
"range": {
"date": {
"gte": "now-72h",
"time_zone": "-06:00"
}
}
}
]
}
}
}
我的问题是,查询总是返回与“Status”字段匹配的记录,但不考虑范围(即,它可能带来更旧/更新的记录)。我明白,通过放置“现在”,我指定了当前日期。也就是说,我如何将其配置为仅获取-72小时内的记录?谢谢你,社区。
1条答案
按热度按时间pu82cl6c1#
因为您使用的是
should
子句,所以它将只匹配条件和返回结果中的任何一个,因为默认情况下,minimum_should_match
值设置为1
。您可以将需要强制匹配的条件移动到
must
子句,并可以选择保留到should
子句。下面的查询将强制匹配
date
条件和should
子句中的任何条件。在这里,
now-72h
将为您提供在过去72小时内创建的录音。