我使用elasticsearch开放发行版来创建一个警报系统。但是我的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时,range根本不能工作。
下面是我的映射:
properties": {
"timestamp": {
"type": "date",
"format": "epoch_second"
},
"value": {
"type": "long"
}
}感谢您的帮助!
发布于 2020-04-10 00:20:15
您的映射是timestamp,但是您的查询包含@timestamp。这两个名称需要一致。顺便说一句,@timestamp没有什么特别之处--它只是一个约定。您可以对任何日期时间字段执行range.gte now-1h。
正确的映射:
PUT test_alert
{
"mappings": {
"properties": {
"@timestamp": {
"type": "date",
"format": "epoch_second"
},
"value": {
"type": "long"
}
}
}
}https://stackoverflow.com/questions/61125252
复制相似问题