我正在使用elasticsearch open发行版来创建警报系统。但是我的elasticsearch查询有一个问题:
"search": {
"indices": ["test_alert"],
"query": {
"size": 3,
"aggregations": {},
"query": {
"bool": {
"filter": {
"range": {
"@timestamp": {
"gte": "now-1h",
"lte": "now",
"format": "epoch_second"
}
}
}
}
}
}
}
这是我在开放式显示器中使用的查询。问题是
now-1h
似乎不起作用,我总是得到空结果。我尝试使用原始时间戳记(以匹配并获取结果),并且效果很好。我不明白为什么在使用now-1h
时,该范围根本不起作用。这是我的映射:
properties": {
"timestamp": {
"type": "date",
"format": "epoch_second"
},
"value": {
"type": "long"
}
}
谢谢你的帮助 !
最佳答案
您的映射显示timestamp
,但查询中包含@timestamp
。这两个名称必须一致。顺便说一句,@timestamp
没什么特别的-这只是一个约定。您可以在任何日期时间字段上执行range.gte now-1h
。
正确的映射:
PUT test_alert
{
"mappings": {
"properties": {
"@timestamp": {
"type": "date",
"format": "epoch_second"
},
"value": {
"type": "long"
}
}
}
}
关于elasticsearch - 为什么我的时间戳范围查询什么都不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61125252/